超高难度问题:C#实现图像的文本化(估计没有几个人会了,呵呵)

大可山人
博客专家认证
2004-11-06 03:19:02
http://www-scf.usc.edu/~flv/ipbook/chap04.files/image016.jpg
http://www-scf.usc.edu/~flv/ipbook/chap04.files/image020.gif

以及如何实现下面链接的C#解决方案:http://www-scf.usc.edu/~flv/ipbook/chap04.htm

解决问题者大量加分!
...全文
206 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
龍过鸡年 2004-11-07
  • 打赏
  • 举报
回复
我也想过,但是这种情况也不是绝对的,我对颜色这东西太迟钝 :p
大可山人 2004-11-07
  • 打赏
  • 举报
回复
再顶一下
wwwcampus 2004-11-06
  • 打赏
  • 举报
回复
我也不懂,建议研究一下OCR
readersm68 2004-11-06
  • 打赏
  • 举报
回复
学习
大可山人 2004-11-06
  • 打赏
  • 举报
回复
口水龙:
至于颜色的取法,是不是可以参照取每相邻16点的平均值,然后根据颜色,取它的灰度,判断灰度在某些范围之内,比如小于50时,用比较“黑”的字符(即笔画多的字符如“●”),在50-128以内的可以用中等笔画的字符,如“$”“@”等;在128-180可以用更少笔画的字符,如“·”;大于180的为空白。
龍过鸡年 2004-11-06
  • 打赏
  • 举报
回复
我没学过美术,不知道颜色间的关系,无法很好的表现颜色的深浅,所以转的效果不是很好:

1、定义一些必要的对象
Image image = Image.FromFile(fileName);
Bitmap b = new Bitmap(image);
stirng s = "";

2、根据像素的颜色对图片进行转换
for(int i = 0; i < b.Height; i+=3)
{
for(int j = 0; j < b.Width; j+=1)
{
Color c = b.GetPixel(j, i); // 取得每个像素的颜色
// 这里是对像素颜色的判断
// 这里应该是个颜色范围的判断,但问题是我不知道范围该怎么取
// 所以我只能用单一的颜色简单的判断一下了
// 根据对颜色的判断返回一个与颜色匹配的字符
if(c.ToArgb() == 0) s += " "; // 像素是否为透明色
else if(c.ToArgb() == Color.White.ToArgb()) s += " "; // 像素是否为白色
else if(c.ToArgb() == Color.Black.ToArgb()) s += "$"; //像素是否为黑色
else s += "*";
// 循环一下系统消息队列
Application.DoEvents();
}
s += "\n"; // 换行
}

3、将转换的字符串用 DrawString() 绘制到一个新建的 Image 上
// 取得一个 Graphics 对象
Graphics g = Graphics.FromImage(b);
// 返回转换后的字符串所占的 2D Size
SizeF sf = g.MeasureString(s, this.Font);
// 新建一个 Bitmap 对象, 对象的大小由 字符串的 2D Size 决定
Bitmap b1 = new Bitmap((int)sf.Width, (int)sf.Height);
// 由新建的 B1 返回一个 Graphics 对象
g = Graphics.FromImage(b1);
// DrawString()
g.DrawString(s, this.Font, Brushes.Black, 0.0f, 00.0f);
// 释放 Graphics 占用的资源
g.Dispose();

4、显示图像
PictureBox box = new PictureBox();
box.Location = new Point(0, 0);
box.SizeMode = PictureBoxSizeMode.AutoSize;
box.Image = b1;
this.AutoScroll = true;
this.Controls.Add(box);
大可山人 2004-11-06
  • 打赏
  • 举报
回复
这个东西应该有得研究,可惜我不知无从下手,功底还不够
czhenq 2004-11-06
  • 打赏
  • 举报
回复
我决定好好研究一下 :)
大可山人 2004-11-06
  • 打赏
  • 举报
回复
另外一个问题:
C#下将真彩图转256色图的问题:
http://community.csdn.net/Expert/topic/3527/3527909.xml?temp=.5745203
大可山人 2004-11-06
  • 打赏
  • 举报
回复
口水龙:如果不难的话,就帮忙解决一下?谢谢!
xiaoslong 2004-11-06
  • 打赏
  • 举报
回复
帮顶
龍过鸡年 2004-11-06
  • 打赏
  • 举报
回复
这个有什么难得?

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧