Delphi 怎么识别图片里面的数字。

zhangzhen_927116 2013-11-14 11:49:35

识别这样的图片怎么弄。最近无聊想弄个传奇验证辅助来玩玩。从零开始啊。。哈哈
...全文
956 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
wrxljf001 2014-06-27
  • 打赏
  • 举报
回复
这应该用Opencv可以做到,不过小弟可能不行.支持一下了
xtfnpgy 2013-11-16
  • 打赏
  • 举报
回复
这种应当不难吧,类似于验证码的识别,这种图片里面的数字大小固定,也不存在噪点和噪线的问题; 你网上搜索下验证码的识别,了解下方法,我简要说下思路: 1.图像二值化;//可百度搜索delphi图像二值化,下同 2.图像分割; 3.找数字规律特征,也是最麻烦的一步! 4.识别; 识别的原理: 采用画线分割法,看画线经过点的个数,比如在图像分割后,在1/3处画一条横线,则经过一个点的数字有: 123567,经过两个点的有:0489;同理可以在2/3再画线经过一个点的有123579。。。 //二值化代码 function TForm1.Binaryzation(img:TBitmap): TBitmap; var m255 : Integer; i,j,c,t : Integer; r,g,b : Extended; n,k : Integer; begin m255 := 255; for i := 0 to img.Width-1 do begin for j := 0 to img.Height-1 do begin if (i=0) or (i=img.Width-1) then begin img.Canvas.Pixels[i,j] := clBlack; Continue; end; if (j=0) or (j=img.Height-1) then begin img.Canvas.Pixels[i,j] := clBlack; Continue; end; c := img.Canvas.Pixels[i,j]; r := GetRValue(c) * 0.333; g := GetGValue(c) * 0.333; b := GetBValue(c) * 0.333; t := Round((r+g+b)/m255); //0.5 U:white ,0.5 O:black if t=0 then img.Canvas.Pixels[i,j] := clWhite else img.Canvas.Pixels[i,j] := clBlack; end; end; Result := img; end; //识别关键代码 计算画线交点个数 for i:=0 to img.Width-1 do begin for j:=0 to img.height-1 do begin if imgAfterCut.Canvas.Pixels[i,j]=clwhite then //画线与数字的交点 begin if (i=Round(1*(img.height-1)/3)) then // 1/3处点的个数 begin a_31 := a_31+1; //a_31定义为integer; end; if (i=Round(2*(img.height-1)/3)) then // 2/3处点的个数 begin a_32 := a_32+1; end; //.........统计1/2 竖向1/3 2/3 1/2等............. end; end; end; if a_31= 1 then showmessage('123..') else if a_31= 2 then begin showmessage('0489'); // 其他逻辑判断 end;
lhy 2013-11-15
  • 打赏
  • 举报
回复
引用 7 楼 zhangzhen_927116 的回复:
引用 6 楼 lhylhy 的回复:
这个应该好办吧,先识别所有方块,然后识别所有的线,最后拼凑成数字。
从来没有接触过这方面的知识。所以不知道从何入手。
我也不是这方面的,不过这种图本来就和大多数图不一样,有自己的特点。
zhangzhen_927116 2013-11-15
  • 打赏
  • 举报
回复
引用 6 楼 lhylhy 的回复:
这个应该好办吧,先识别所有方块,然后识别所有的线,最后拼凑成数字。
从来没有接触过这方面的知识。所以不知道从何入手。
lhy 2013-11-15
  • 打赏
  • 举报
回复
这个应该好办吧,先识别所有方块,然后识别所有的线,最后拼凑成数字。
zhangzhen_927116 2013-11-15
  • 打赏
  • 举报
回复
引用 4 楼 adamsun 的回复:
delphi接口文件,有老外做了工作共享出来了https://github.com/Laex/Delphi-OpenCV
具体怎么用。全市英文。天那。看不懂
adamsun 2013-11-15
  • 打赏
  • 举报
回复
delphi接口文件,有老外做了工作共享出来了https://github.com/Laex/Delphi-OpenCV
adamsun 2013-11-15
  • 打赏
  • 举报
回复
利用OpenCV库
zhangzhen_927116 2013-11-15
  • 打赏
  • 举报
回复
人呢?
zhangzhen_927116 2013-11-15
  • 打赏
  • 举报
回复
引用 9 楼 sololie 的回复:
http://bbs.csdn.net/topics/390438979 http://www.cnblogs.com/CoreCaiNiao/archive/2011/12/26/2302141.html
都是NET的。几年前学习了一点基础现在全忘了。
zhangzhen_927116 2013-11-15
  • 打赏
  • 举报
回复
引用 8 楼 lhylhy 的回复:
引用 7 楼 zhangzhen_927116 的回复:
[quote=引用 6 楼 lhylhy 的回复:] 这个应该好办吧,先识别所有方块,然后识别所有的线,最后拼凑成数字。
从来没有接触过这方面的知识。所以不知道从何入手。
我也不是这方面的,不过这种图本来就和大多数图不一样,有自己的特点。[/quote] 你上面的那个方法。识别方块,然后识别所有线。怎么实现。怎么平凑。有没有相关的资料什么的。?
zhangzhen_927116 2013-11-14
  • 打赏
  • 举报
回复
为什么会没有人呢?难道要提分吗

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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