突然想起网上有很多打码挣钱的活动,于是灵光一闪,用C#搞个自动识别验证码的程序出来岂不是自动挣钱了?找了半天,打码就是个坑货,半天不见一个码,打个锤子。不过验证码识别却是值得研究的,在学习识别验证码之前,我们先来学习下OCR光学字符识别,halcon在这方面提供的算法很多,visionPro比较薄弱,所以学习下halcon吧。
我这里随便用画板写了几个字,我用不同字体试过了,效果不错,我懒得做动图了,所以就这一张图。
复制
//读入一张图片,提供窗口句柄及设置窗口大小 dev_close_window () dev_update_pc ('off') dev_update_window ('off') read_image (Image, 'C:/Users/Administrator/Desktop/testimage/1.png') get_image_size (Image, Width, Height) dev_open_window (0, 0, Width, Height, 'black', WindowHandle) set_display_font (WindowHandle, 16, 'mono', 'true', 'false') dev_set_draw ('margin') //创建字体失败模板 create_text_model_reader ('auto', 'Universal_0-9A-Z_Rej', TextModel) set_text_model_param (TextModel, 'dot_print', 'true') set_text_model_param (TextModel, 'min_contrast', 40) //循环读入图片识别 for Index := 1 to 4 by 1 read_image (Image, 'C:/Users/Administrator/Desktop/testimage/'+Index+'.png') dev_display (Image) find_text (Image, TextModel, TextResultID) get_text_object (Characters, TextResultID, 'all_lines') get_text_result (TextResultID, 'class', Class) //显示结果 set_tposition (WindowHandle, 20,20) write_string (WindowHandle, '结果:'+ sum(Class)) stop () endfor
上面主要使用了create_text_model_reader
识别模式选择、find_text
查找识别算子,使用起来比较简单。
代码比较简单,很容易看懂,学了好几天halcon了,个人觉得halcon最难的就是对算子的理解和记忆。建议带有目的性的学习,比如你需要检测产品数量,就专门去看斑点相关算子和相关案例,当然这样学习的弊端就是只会按照例子的套路写,如果出现一些变化,就不会写了,不过当你写过几个项目后应该会有一些自己的认知,再理解起来应该就不难了。
当然,我个人还是建议带有目的性的学习,不能像学校一样挨着理解每一个算子功能含义,不然理论知识在丰富,不会动手等于零。动手才能快速掌握。
评论 (2)