作者:下家山(转载,请注明)
专业图像识别技术常用:OpenCV和MatLab;
OpenCV:
1:是由Intel公司资助的开源计算机视觉库;
2:包含300多个C/C++函数的跨平台的中高层API。它不依赖于其他外部库,但也可以使用某些外部库。
3:对非商业应用和商业应用都是免费的。
MatLab:
1:Mathworks公司开发的一款工程数学计算软件。
2:对数学操作(矩阵变换,正,反余玄函数等)进行更直接的描述。它也是一种语言,但不同于C,C++,Java等高级语言是对机器行为进行描述。
//Matlab的for语句
for I =1:1:5
//循环体
End
VC:
但并不是说不能用VC,如果掌握成像规律,bmp图片格式原理,用什么语言都可以。VC中的CImg类可以很方便的操作位图文件。
说到简单,其实很简单,比如下面我在实际工作中做得一个led自动测试(应用在路由器生产线中判别led灯态),我什么工具(matlab,opencv,vc)都没有用完全是C++来实现的。
用专业术语说就是“二值化”,其结果如下:
定格每一行led的上下边缘,结果如下:
定格每一列led的左右边缘,结果如下:
从上面这个图,我们可以取得每个LED四个顶点坐标
在第六步得到的结果中,有些位置不够精确,如第一行的第四个,其右边缘框定结果并不精确,可以往左移。
只要在配置文件里面给出要识别的是几行几列,每个灯的颜色。
如:有12个灯(最多可以识别12个灯);
那么在配置文件里应该写成
[OCRConfig]
LedLn = 3
LedCol = 4
LedLnColor_1 = 0x67676767
LedLn1Color_2 = 0x72727272
LedLn1Color_3 = 0x67676767
这里67为’g’的ASCII码,72为’r’的ASCII码,这样每行可以用一个32位16进制数来表示,其中32为可以表示4个字节,每个字节代表一列。
转载:请注明,作者,下家山 请尊重原创!
dwwzl 2014-6-6 11:44
用户1395246 2014-6-6 11:42
用户1069018 2014-6-6 10:39
用户1540383 2012-10-11 10:13
allen_zhan_752827529 2012-2-13 18:29
强烈反对万恶的截图! 恢复 lena 的真相啊!
用户1638263 2011-12-15 00:20
用户1398524 2011-12-14 17:02
keendawn_745908826 2011-12-13 14:15
用户1369767 2011-12-3 11:41
用户1626152 2011-9-24 13:50