如何用Winform做一个识别图片的程序

wt33401716 2011-04-25 09:05:59
比如说桌面有很多图标,在程序内设置好一个要识别的图标(桌面上有的)然后点按钮鼠标自动移动到该图标上
麻烦给位大虾帮帮忙。。
先谢谢了
...全文
283 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wt33401716 2011-04-28
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 jshzp 的回复:]
引用 5 楼 wt33401716 的回复:
引用 2 楼 simrodnet 的回复:
是完全识别还是模糊识别啊,如果完全识别比较所有像素相等应该就行

小弟新手,如果完全识别应该怎么弄啊

理论上说,识别率达到100%很难,几乎不可能!
[/Quote]
那模糊识别的应该怎样弄啊
jshzp 2011-04-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wt33401716 的回复:]
引用 2 楼 simrodnet 的回复:
是完全识别还是模糊识别啊,如果完全识别比较所有像素相等应该就行

小弟新手,如果完全识别应该怎么弄啊
[/Quote]
理论上说,识别率达到100%很难,几乎不可能!
wt33401716 2011-04-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 dxd0128 的回复:]
C# code

//引用 ITPUB个人空间
程序使用Tesseract进行图片识别,其.NET版本地址为:http://www.pixel-technology.com/freeware/tessnet2/
private void btnGo_Click(objectsender, EventArgs e)
{
tessnet2.Tesseractocr=newtess……
[/Quote]
txtCharList.Text接收的是什么啊
wt33401716 2011-04-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 simrodnet 的回复:]
是完全识别还是模糊识别啊,如果完全识别比较所有像素相等应该就行
[/Quote]
小弟新手,如果完全识别应该怎么弄啊
dylike 2011-04-26
  • 打赏
  • 举报
回复
我想你或许是忽略了桌面壁纸
独立级IT民工 2011-04-26
  • 打赏
  • 举报
回复

//引用 ITPUB个人空间
程序使用Tesseract进行图片识别,其.NET版本地址为:http://www.pixel-technology.com/freeware/tessnet2/
private void btnGo_Click(objectsender, EventArgs e)
{
tessnet2.Tesseractocr=newtessnet2.Tesseract();//声明一个OCR类
string defaultCharList="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-";
if(!string.IsNullOrEmpty(txtCharList.Text))
{
defaultCharList=txtCharList.Text;
}
ocr.SetVariable("tessedit_char_whitelist", defaultCharList);//设置识别变量,当前只能识别数字及英文字符。
ocr.Init(Application.StartupPath+@"\tessdata","eng",false);//应用当前语言包。注,Tessnet2是支持多国语的。语言包下载链接:http://code.google.com/p/tesseract-ocr/downloads/list

WebClient wc=newWebClient();
byte[] oimg=wc.DownloadData(txtImageUrl.Text);// 自己修改成要识别的地址吧
Bitmap bp=newBitmap(newMemoryStream(oimg),true);//识别图像
Bitmap bp2=newBitmap(newMemoryStream(oimg),true);
picBox1.Image=bp2;
//bp = ImageProcess.RemoveGreen(bp);
//bp = ImageProcess.ToBW(bp);

picBox2.Image=bp;

List<tessnet2.Word>result=newList<tessnet2.Word>();
stringtxt="";

try
{
result=ocr.DoOCR(bp, Rectangle.Empty);//执行识别操作
foreach(tessnet2.Wordwordinresult)//遍历识别结果。
{
txt+=word.Text;
}
}
catch(Exception ex)
{

}


if(string.IsNullOrEmpty(txt)||txt=="~")
{
#region 如图片太小,无法识别,则先放大
intw=bp.Width>=100?bp.Width:100;
inth=bp.Height>=30?bp.Height:30;

Bitmap resizedBmp=newBitmap(w, h);
Graphics g=Graphics.FromImage(resizedBmp);
g.DrawImage(bp,newRectangle(0,0, w, h),newRectangle(0,0, bp.Width, bp.Height), GraphicsUnit.Pixel);
bp=resizedBmp;
#endregion

picBox2.Image=bp;

result=ocr.DoOCR(bp, Rectangle.Empty);//执行识别操作
txt="";
foreach(tessnet2.Wordwordinresult)//遍历识别结果。
{
txt+=word.Text;
}
}

textBox1.Text=txt;
}



demo下载http://www.madcn.net/uploadfile/OCR.Tesseract.Demo1.rar
simrodnet 2011-04-25
  • 打赏
  • 举报
回复
是完全识别还是模糊识别啊,如果完全识别比较所有像素相等应该就行

110,561

社区成员

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

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

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