搜索
bottom↓
回复: 364

经过半个月学习opencv有点小成果,用摄像头识别贴片元件的定位和元件的角度,貌似可以用

  [复制链接]

出0入0汤圆

发表于 2011-4-19 10:07:02 | 显示全部楼层 |阅读模式
先说一下
开源的opencv真是一件伟大的产品,
那么多个函数跟变量(具体多少还没数过),要是结合起来综合运用几乎可以胜
任任何有关图像识别和处理方面的工作。。如果能更深入一点根据具体需要修改或优
化里面的源码那更是如虎添翼。。

花了点时间浏览了www.opencv.org.cn论坛里的所有贴子,还好不多才200多页,
总体上对opencv里的一些常用函数功能作用大致有点了解,筛选一些跟元件识别有关的运用内容,但它论坛里的贴子回复的内容点到即止的居多。
从网上下载了能搜到的教程跟代码全学习了解测试了一下
图像处理流程通常先开始都是要进行滤波,除燥,灰度,二值化后再轮廓识别等。

开始动手
经过多次好多次运行测试组合,终于有一次显示出意外的惊人效果,而且相当简单只是调用了几个函数而以,就可以有这样效果实在出人意料


第一个是进行元件中心点获取,也是直接调用函数再加点东西就可以得出元件的四个矩形顶点坐标,有这几个坐标就可以直接算出元件中间点所在的坐标了,
如果要检测元件摆放角度是否是垂直90度,只要判断边宽的长度为最小或最大时就是垂直90度。。。

(原文件名:1.jpg)

测试视频地址: http://v.youku.com/v_show/id_XMjU5NzY5NTI0.html

但这个矩形框无法测出元件具体角度


不过,
又搜到
还有另外一个函数可以提供这个功能,调用后可以直接求出最小外接矩形和角度
如图。。。


(原文件名:2.jpg)

测试视频地址: http://v.youku.com/v_show/id_XMjYwMDMzMDc2.html



里面的光源不行,临时用手电筒,和在光盘上插几个LED做环形灯做照明 无法做到无阴影显示,
如果光源做的好,效果应该是非常精确稳定。。

源代码,等整理后再放上来。。希望熟悉opencv的人能提供更多一些使用经验

出0入0汤圆

 楼主| 发表于 2011-4-21 00:03:01 | 显示全部楼层
又完善了一点,明天放代码。。。。还有一部份说明没注上


(原文件名:2.jpg)

出0入0汤圆

 楼主| 发表于 2011-4-21 21:28:41 | 显示全部楼层
回复【23楼】ggg12345
赶上直播哦,能玩人脸识别不?
-----------------------------------------------------------------------

这东西主营人脸识别,人脸识别的例子最多。。

其它方面例子反而很少。。

出0入0汤圆

 楼主| 发表于 2011-4-21 21:41:13 | 显示全部楼层
包含上面两种做法

(原文件名:cc.jpg)


opencv里需要的头文件跟库文件都已编译好放在和设置在当前程序目录下,就可不用安装opencv 也能直接编译。

(原文件名:bb.jpg)

代码下载:
点击此处下载 ourdev_632584NBLRSV.rar(文件大小:755K) (原文件名:Opencv元件识别.rar)
没装opencv的机子运行时需要一些DLL支持,把这些dll放在可执行程序同录下,或者系统system下
点击此处下载 ourdev_632586MGHL6X.rar(文件大小:1.02M) (原文件名:DLL运行支持.rar)


一个教程+配套实例源码
点击此处下载 ourdev_632591P3KQNB.pdf(文件大小:9.37M) (原文件名:O教程1.pdf)
点击此处下载 ourdev_632588MF4LAJ.pdf(文件大小:4.36M) (原文件名:O教程2.pdf)
点击此处下载 ourdev_632592H2AQN8.pdf(文件大小:5.77M) (原文件名:O教程3.pdf)
实例源码:
点击此处下载 ourdev_632593QPOVQ5.rar(文件大小:3.20M) (原文件名:实例源代码.rar)


另两个chm格式使用帮助
点击此处下载 ourdev_632596UPE7Q4.rar(文件大小:6.11M) (原文件名:OpenCV.chm.rar)

出0入0汤圆

 楼主| 发表于 2011-4-21 21:49:25 | 显示全部楼层
大文件是不是传不上来,传一点教程..到最后没反应


可以传了,需要等一会儿。。

出0入0汤圆

 楼主| 发表于 2011-4-21 21:59:54 | 显示全部楼层
回复【27楼】FlashNuk
-----------------------------------------------------------------------

这个不是我牛,是opencv牛,我基本没做什么。。仅仅是学会调用。
而且只用到皮毛的功能,还有圆形,椭圆形识别,汽车车牌数字识别,移动中车辆识别等,PCB制版质量检测
还有摄像机标定,把镜头看到的距离转换成实际的距离等

它里面还有许多亚像素识别函数,半个像素识别精度,已接近专业级了

出0入0汤圆

 楼主| 发表于 2011-4-21 22:16:54 | 显示全部楼层
回复【29楼】ggg12345
-----------------------------------------------------------------------
基忽都可以吧,那个论坛上有介绍,工业相机采集都可以。。

出0入0汤圆

 楼主| 发表于 2011-4-21 22:55:54 | 显示全部楼层
我这里方法是这几步
1.读取图像
2.调用cvCvtColor(src, gray, CV_BGR2GRAY);  把三通道彩色转成单通常8位灰度图像
3.调用smooth函数对灰度图像进行滤波说白了就是把图像变模糊,让边缘变光滑,这个好处理外形轮廓
4.把滤波后灰度值图像再过滤成黑白二色图像
4.调用轮廓识别函数cvFindContours是从二值图像中直接检索出所有轮廓
5.主要工作完成。。
剩下就是把图画出来

只要把图像过滤成黑白二值后,下面就可以直接调用识别轮廓函数进行识别,前面几步过滤的越好,识别出来的精度越高
我这个只用smooth函数对图像进行模糊一下,其实前期除燥处理还有其它多种方法,跟组合方法

这里调用smooth滤波的效果是:比如未滤波前图像清晰度很高,边边角角太过清晰分明,
这样结果会使后面的黑白二值处理边缘不平整,再调用轮廓识别函数找出来的轮廓就不精准


(原文件名:2.JPG)

经过适当滤波后这时边缘平滑,二值化后就很平整,这样最好识别,
但是滤波也不能太过头,因为精准度会产生误差,因为滤完后图像跟原图已经有所不同了


(原文件名:3.JPG)




所以操作步骤是:
光源最好越好越好,物体跟背景颜色反差大一点,像白色跟黑色
先调第1个滑块给图像适当滤波,然再再调第二个滑块出现平滑边缘,就可以比较准确的识别
更精准识别,图像要越大越清晰,精准度越高,靠进摄像头近一点,焦距调清晰一点,物体显示大一点,这样效果也相当好
但是这样太考近对边缘任棱角太多的物体就不好用,边缘齿太多的物体还是放远点模糊一点比较好。

opencv功能很强大,前期的预处理可以有多种方法做,这个还需要不断的学习中。。
只要预处理做好了,变成二值图后,后面就可以省心给轮廓识别函数去得出结果了。。


(原文件名:kk.jpg)

出0入0汤圆

 楼主| 发表于 2011-4-23 14:44:36 | 显示全部楼层
继续基本完成一项圆的定位识别,一般调用opencv取圆函数跟本行不通,结果太不稳定
这里用找椭圆的方法找圆,做法比较麻烦复杂一点,稳定性基本达到,还要再测试


(原文件名:aa.jpg)


现在偶想做一台简单的贴片机机械架子,准备用实际运行来调试和测试效果,跟电脑传输用M8 USB-HID来做
准备去买两台坏的针式打印机,把里面移动滑台拆出来做滑轨平台

现在我想知道,像这样贴元件的 精度,
步进电机到底需要哪一种的,要细分多少的?

打印机上的步进电机精度能胜任否?一般需要多少细分就够了
还有步进电机同步带 有没有什么特别要求,我看到有的同步带的齿比较宽。。
还有轴上同步头是不是也有要求。。

如果自已去买步进电机和驱动器的话,一般要选哪一种的
关键一点,步进电机跟驱动板总价不能超过250元,步进电机最好小一点,没用多大力气,最好越小越好..

出0入0汤圆

 楼主| 发表于 2011-4-30 13:41:53 | 显示全部楼层
里面的摄像头定义,不适合多个摄像头
多个摄像头指定显示写法定义不一样,回家后我改一下看看。。

出0入0汤圆

 楼主| 发表于 2011-4-30 17:58:28 | 显示全部楼层
回复【67楼】QQ373466062 萤火虫
     还有一个就是==单独只用==笔记本自带的摄像头 也是:  打不开摄像头
-----------------------------------------------------------------------

这种情况估计是Opencv无法识别摄像头驱动。。
得用跟硬件无关的DirectShow显示方法
官网上有提供例子包含了DirectShow的CameraDS类,

下载这个附件运行里面的camerads.exe,看看你的电脑能不能显示,里面有源码
可以的话,就可以把CameraDS这个类改用到MFC上
点击此处下载

出0入0汤圆

 楼主| 发表于 2011-4-30 18:14:42 | 显示全部楼层
回复【69楼】kmingroy
opencv 做為沒有太高精度要求的東西还行,我曾經用在led的焊點綁定機上,花了半年多的時間,沒日沒夜的,最後还是失敗了。
做出來的東西精度不行,可能是我認知不足吧,別人的東西焊接100個焊點,正確率達到99%,而我的的僅能做到85%。這就是非常大的差距。最難的的地方是鏡頭的標定,非線性的東西很多,要做到一一對應太困難了,和德國的專業軟件比差太遠了。在有任意角度的旋轉匹配應用也很有挑戰,重複精度不好控制啊。現在想起來心有餘悸。
倒是去年我利用業餘時間,用它試做了一個項目自己用的,因精度僅有50um的要求,應用環境不惡略,所以幾十台山寨版的印刷設備居然達到設計精度要求,算是個安慰吧。東西看起來簡單,但如果有精度要求和可靠性要求就不容易啊。下圖是我人生中設計的的第7種機器視覺,讓同行的德國佬沉默了許久。
這行飯不好吃,不但對設計的人要能力行,維護的人也要行才能玩的轉。
我設計了一套7......
-----------------------------------------------------------------------

你厉害呀,图在哪里呀

德国那个软件是指HALCON吧,300多兆下载编译运行,界面都能显示,以为可以运行
具体点按钮就不行了弹出出错信息,注_册码等东西,网上的破_解都不全,这软件好像要几个月就要申请一次授权号
这东西的功能介绍的图文并帽,无与伦比,有人用后发现效果也差不了多少嘛,
关键还是要会使用,也是要根据实际环境情况,运用里面各种的函数组合来达到最佳效果,这就需要对方技术支持了。。
有高手用opencv也能做到10份之一像素的高精度,做出的结果跟HALCON比,虽然还有点差距,但也只在0.0几范围之内
图像算法精通的话,什么都是浮云。。

我现在先把机架给架好,东西都给备齐了,跟据实际再做各种微调人为修正等试试,只有自已动手做后才知道效果到底怎样
问一下你步进电机是用几细分,16细分够不够细,每个脉冲0.11度,够不够细了

出0入0汤圆

 楼主| 发表于 2011-5-1 16:31:44 | 显示全部楼层
这次在Win7应该没问题了吧,完整设置好,直接可编译
点击此处下载 ourdev_635737G1JR61.rar(文件大小:1.36M) (原文件名:win7角度识别.rar)

出0入0汤圆

 楼主| 发表于 2011-5-4 22:31:38 | 显示全部楼层
机械部份全搭好啦。。全部用现成的东西。。
机架主要来置两台针式打印机,一大一小

(原文件名:5.jpg)


吸嘴部份:

(原文件名:2.jpg)


(原文件名:1.jpg)


(原文件名:3.jpg)

出0入0汤圆

 楼主| 发表于 2011-5-4 22:33:41 | 显示全部楼层
回复【88楼】kmingroy

(原文件名:dsc00778.jpg)
引用图片


(原文件名:dsc00779.jpg)
<center><a class=tt16 onclick="fnquickimagequote(this,'files_39/ourdev_636251g0ef45.jpg','原文件名:dsc00779.jpg')" href="###">引用......
-----------------------------------------------------------------------

专业。。。!!

车间真干净。。。

出0入0汤圆

 楼主| 发表于 2011-5-4 23:10:32 | 显示全部楼层
回复【97楼】kmingroy
呵,当时那德国佬看完后,确认完所有的指标。沉默了许久,他没有提任何意见,只在报告上写要求工人全部穿防静电服工作。
我郁闷了一下,这山寨玩意没有那么娇嫩吧!
吃饭的时候,他突然说了一句,中国给他们的生存压力很大,还好没有说是我山寨他们的,因为这个不可能的。他们也没有类似的设备。
最后还说了句,他真的相信中国能制造j20。哈,那顶帽子也戴得太高了。
-----------------------------------------------------------------------

他总要提点意见,要不然就被你给比下去。。。^_^

出0入0汤圆

 楼主| 发表于 2011-5-19 00:52:39 | 显示全部楼层
机械部份已做完,最近在做各部份反复测试运行,
有几个没想到,由于是第一次使用步进电机

1.没想到的是给步进电机的供电 跟电压多少无关,
输入5V也行,12V也行,24V也行,关键是要调电流到合适的值就都会有力度, 而且不同细分,不同的速度下面电流值都要微调到合适值时,才不发热,力度又够..
2.没想到的是步进电机的力量是那么大,开始还以为力会不够,标称是4.8V的电机,转起来手跟本就握不住..
3.没想到的步进电机的运行误差是那样小,没亲自做之前常看网上说运行起来总会产生误差
但是我反复来回运行了3个多小时也没见有什么误差...是相当的精准..

暂时这些...这星期进行元件拾取测试..

出0入0汤圆

 楼主| 发表于 2011-6-4 23:53:08 | 显示全部楼层
实验机已做好,也进行相当次数的贴装测试效果还算不错
过几天拍个详细的过程和视频上来,现在最大不可靠的点出在味料槽
味料槽做的精度直接影响到吸嘴吸取的成功度,更大的难题是拨皮,'像上面这样的结构无法做,
,结构需要更改

出0入0汤圆

 楼主| 发表于 2012-3-28 00:07:01 | 显示全部楼层
huaixiang 发表于 2012-3-27 18:07
非常佩服lz,圆形定位能不能告知具体方法,如果能提供参考资料那更好了

有空时,把代码稍微改一下在WIN7上运行...
后,再发源码上来...
说快也快,说慢也慢,
看心情.....^)^

出0入0汤圆

 楼主| 发表于 2012-3-28 00:12:39 | 显示全部楼层
sz135848 发表于 2012-3-25 18:51
OpenCV库很强大,但怎么脱离这个库,一直没找到比较好的资料,楼主有没有这方面的资料 ...

你可以去它
中文论坛去找资料..或下载全套可编译的源代码
还有嵌入式方面的运用介绍

出0入0汤圆

 楼主| 发表于 2012-5-3 11:36:25 | 显示全部楼层
huaixiang 发表于 2012-5-3 10:19
lz,你好,圆形识别的资料整好了吗,谢谢

最近没空去整这些东西
要么今晚,要么明天传上来。。

出0入0汤圆

 楼主| 发表于 2012-5-4 14:46:20 | 显示全部楼层
注意2点
待测的圆的底部要用黑色的做背景,容易区分识别
一次会找出显示很多圆,调节半径大小到需要显示的那一个


源码:
http://115.com/file/anljbcbx

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2012-7-13 00:18:51 | 显示全部楼层
本帖最后由 118139 于 2012-7-13 00:46 编辑
zhuisuoji 发表于 2012-7-12 23:36
请问楼主机子做得怎样了呀?可否上一些图片养养眼啊


这个早没做了

不过,我买了几根光轴滑轨回来做其它东西
才知道原来光轴滑块是滚珠的,好滑哦,太滑了
但运行起来的精确度跟同步带质量,和物体重量的惯性很有西西相关

不像打印机的滑轨,接触的那是非常紧密,几天不用不加点油,都拉不动
走了15分钟误差只在两个脉冲左右
走久了误差又变回去,又变没什么差,总之误差非常之小,不怎么需要重新对位

如用光轴好像就不会有这么顺利。。
我不知道光轴有没有分好的和差的。。精度高的和低的。。

出0入0汤圆

 楼主| 发表于 2012-7-13 00:45:55 | 显示全部楼层
zhuisuoji 发表于 2012-7-13 00:40
不会吧? 我现在用的就是光轴啊,没有这么严重吧?现在只是完成了运用单片机实现控制运行,串口接收G ...

好快,电机是用多大的
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-20 13:27

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表