• 价格指数网会员
  • 华强电子网会员
会员登录关闭

  • 用户名:
  • 密   码:
  • 华强电子网会员在此登录
  • 如果不是会员,请联系我们申请开通。
关闭

下家山的专栏

一:专业图像识别方法

    专业图像识别技术常用: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四个顶点坐标


    七: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个字节,每个字节代表一列。

  • 阅读(43298)  |   评论(4)  |   推荐(135)
网友评论
头像
  • 匿名很有用途,可以作为参考
  • 2012/4/1 10:44:59回复
  • 头像
  • 匿名略懂
  • 2012/4/1 10:44:02回复
  • 头像
  • 匿名谢谢分享
  • 2012/4/1 10:43:33回复
  • 头像
  • 匿名抢到沙发了
  • 2012/4/1 10:42:28回复
  • 发表评论(已有4条评论)
    看不清,换一张
    关闭

    积分抽奖

    您的当前积分分。

    写评论拿积分,积分抽奖最高可中iPhone!

    立即抽奖 >>