经过半个月学习opencv有点小成果,用摄像头识别贴片元件的定位和元件的角度(转载)

(2013-04-17 16:00:22)

转载▼

  分类: 学习笔记
先说一下
开源的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的人能提供更多一些使用经验

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

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

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


(原文件名:2.JPG)

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


(原文件名:3.JPG)

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

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


(原文件名:kk.jpg)

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

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

有关摄像头校正问题:
镜头畸变可以通过事先拍一张网格图来得到
---------------------------------------
用网格来标定是一种简单的方法,但在高精度的情况下换是行不通的。
因为格与格的的插补就很复杂。如果算法不佳误差绝对是大于一个像素以上。
经常会发现算出来的定位总是不理想。

当然用来贴电阻电容是没问题,但用来贴IC问题可大了。

有关下面的进展:
是不是你的摄像头速度慢?
我以前玩过打线机,我感觉用高速摄像头加显微镜头,给电机反馈位置,相当于闭环,应该可以做到那个精度的,或者先用低倍镜头的摄像头给芯片粗定位,当芯片进入显微镜头范围内再用高倍摄像头测位置,这时候差他几个像素也没问题。

测角度:
如果测算角度的话,用hough变换可以很快找到直线,然后算角度。

 
原载网址:http://www.amobbs.com/thread-4684408-1-1.html

转载于:https://www.cnblogs.com/yuanhuang32/p/10825628.html

opencv,用摄像头识别贴片元件的定位和元件的角度(转载)相关推荐

  1. opencv实现车牌识别之车牌号定位_1

    转载文章:http://blog.csdn.net/u011630458/article/details/43604689 简介 按照在哪里跌倒就在哪里爬起来的精神,本章继续做车牌号的检测识别.所有步 ...

  2. 纯手码 | 基于OpenCV的车牌识别(Sobel、颜色定位),绝对实用

    车牌识别大体上需要经历过Sobel定位.颜色定位.SVM对定位来的候选车牌进行评测,给出评分,最后通过提取HOG特征按照训练模型进入ANN识别. 这一章节介绍 定位相关的逻辑代码,其中定位用到 Sob ...

  3. 基于OpenCV的车牌识别(Sobel、颜色定位)

    车牌识别大体上需要经历过Sobel定位.颜色定位.SVM对定位来的候选车牌进行评测,给出评分,最后通过提取HOG特征按照训练模型进入ANN识别. 这一章节介绍 定位相关的逻辑代码,其中定位用到 Sob ...

  4. QT VS2019 OpenCV yolo4 摄像头识别人脸

    环境 IDE:VS2019 msvc2017_64 OpenCV版本:3.4.15 一.OpenCV 1.编译OpenCV 尽量重头说起 因为搞不好我到时候也忘了-.- 先是编译OpenCV VS跟m ...

  5. 使用opencv调用摄像头识别颜色(python版)

    import numpy as np import cv2font = cv2.FONT_HERSHEY_SIMPLEX lower_red = np.array([0, 150, 150]) hig ...

  6. 2021-01-07 python opencv实现车牌识别 颜色定位

    python opencv实现车牌识别 颜色定位 主要代码参考https://blog.csdn.net/wzh191920/article/details/79589506 GitHub:https ...

  7. python调用摄像头人脸识别代码_利用face_recognition,dlib与OpenCV调用摄像头进行人脸识别...

    用已经搭建好 face_recognition,dlib 环境来进行人脸识别 未搭建好环境请参考: 使用opencv 调用摄像头 import face_recognition import cv2 ...

  8. python人脸识别截图_Python OpenCV调用摄像头检测人脸并截图

    本文实例为大家分享了Python OpenCV调用摄像头检测人脸并截图的具体代码,供大家参考,具体内容如下 注意:需要在python中安装OpenCV库,同时需要下载OpenCV人脸识别模型haarc ...

  9. java调起本地摄像头,利用openCV进行人脸识别(一)

    嗨咯,又好久没有更新了.今天写个前阵子做的人脸识别程序.该程序客户端基于Jave JFrame 客户端的主要作用是,调用电脑的摄像头(我的直接调用笔记本摄像头),然后回显摄像头录取的信息,再利用ope ...

最新文章

  1. Docker学习(四)-----Docker容器常用命令
  2. C语言库函数大全及应用实例二
  3. 网站优化上首页不算成功稳定排名才算
  4. ubuntu 14.04 安装redmine
  5. ASP.NET设置焦点到输入框
  6. MACD 的数学解释
  7. 河南省高中毕业会考计算机考试,河南高中会考等级划分标准
  8. RAID技术详细解答之一:入门基础篇
  9. linux salt生成,51CTO博客-专业IT技术博客创作平台-技术成就梦想
  10. python中变量怎么定义_python中的变量的使用定义以及使用规则
  11. 软件工程知识点总结(含各类软件工程各类图的画法)
  12. 机器学习(四)神经网络
  13. ST Visual Programmer(STVP)给STM8系列芯片烧录程序方法
  14. doc pdf html txt mht,mht文件格式介绍
  15. Method annotated with @Bean is called directly. Use dependency injection instead
  16. item2vec--word2vec在推荐领域的使用
  17. centOS最全下载地址
  18. Web API-添加Swagger,SQL Server,记录并导出到Excel
  19. matlab求函数的极限
  20. 对自动驾驶仿真软件研发方向的看法

热门文章

  1. php soap 用户名密码,PHP SOAP客户端帮助!
  2. mysql存储过程while 遍历游标
  3. Docker Registry本地私有仓库搭建
  4. h5的横线_CSS文字两边添加横线的几种方法
  5. c语言中的jsonpath的处理
  6. Openwrt上配置Aria2迅雷离线下载步骤
  7. matlab 程序设计
  8. centos6.6 安装python环境及Django 1.9.0
  9. 什么才是尊重自己呢?
  10. 电脑忽然卡了,键盘鼠标也失灵,问题所在,如何处理?