opencv,用摄像头识别贴片元件的定位和元件的角度(转载)
经过半个月学习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)
得用跟硬件无关的DirectShow显示方法
官网上有提供例子包含了DirectShow的CameraDS类,
下载这个附件运行里面的camerads.exe,看看你的电脑能不能显示,里面有源码
可以的话,就可以把CameraDS这个类改用到MFC上。
镜头畸变可以通过事先拍一张网格图来得到 --------------------------------------- 用网格来标定是一种简单的方法,但在高精度的情况下换是行不通的。 因为格与格的的插补就很复杂。如果算法不佳误差绝对是大于一个像素以上。 经常会发现算出来的定位总是不理想。 当然用来贴电阻电容是没问题,但用来贴IC问题可大了。 有关下面的进展: 测角度: |
转载于:https://www.cnblogs.com/yuanhuang32/p/10825628.html
opencv,用摄像头识别贴片元件的定位和元件的角度(转载)相关推荐
- opencv实现车牌识别之车牌号定位_1
转载文章:http://blog.csdn.net/u011630458/article/details/43604689 简介 按照在哪里跌倒就在哪里爬起来的精神,本章继续做车牌号的检测识别.所有步 ...
- 纯手码 | 基于OpenCV的车牌识别(Sobel、颜色定位),绝对实用
车牌识别大体上需要经历过Sobel定位.颜色定位.SVM对定位来的候选车牌进行评测,给出评分,最后通过提取HOG特征按照训练模型进入ANN识别. 这一章节介绍 定位相关的逻辑代码,其中定位用到 Sob ...
- 基于OpenCV的车牌识别(Sobel、颜色定位)
车牌识别大体上需要经历过Sobel定位.颜色定位.SVM对定位来的候选车牌进行评测,给出评分,最后通过提取HOG特征按照训练模型进入ANN识别. 这一章节介绍 定位相关的逻辑代码,其中定位用到 Sob ...
- QT VS2019 OpenCV yolo4 摄像头识别人脸
环境 IDE:VS2019 msvc2017_64 OpenCV版本:3.4.15 一.OpenCV 1.编译OpenCV 尽量重头说起 因为搞不好我到时候也忘了-.- 先是编译OpenCV VS跟m ...
- 使用opencv调用摄像头识别颜色(python版)
import numpy as np import cv2font = cv2.FONT_HERSHEY_SIMPLEX lower_red = np.array([0, 150, 150]) hig ...
- 2021-01-07 python opencv实现车牌识别 颜色定位
python opencv实现车牌识别 颜色定位 主要代码参考https://blog.csdn.net/wzh191920/article/details/79589506 GitHub:https ...
- python调用摄像头人脸识别代码_利用face_recognition,dlib与OpenCV调用摄像头进行人脸识别...
用已经搭建好 face_recognition,dlib 环境来进行人脸识别 未搭建好环境请参考: 使用opencv 调用摄像头 import face_recognition import cv2 ...
- python人脸识别截图_Python OpenCV调用摄像头检测人脸并截图
本文实例为大家分享了Python OpenCV调用摄像头检测人脸并截图的具体代码,供大家参考,具体内容如下 注意:需要在python中安装OpenCV库,同时需要下载OpenCV人脸识别模型haarc ...
- java调起本地摄像头,利用openCV进行人脸识别(一)
嗨咯,又好久没有更新了.今天写个前阵子做的人脸识别程序.该程序客户端基于Jave JFrame 客户端的主要作用是,调用电脑的摄像头(我的直接调用笔记本摄像头),然后回显摄像头录取的信息,再利用ope ...
最新文章
- Docker学习(四)-----Docker容器常用命令
- C语言库函数大全及应用实例二
- 网站优化上首页不算成功稳定排名才算
- ubuntu 14.04 安装redmine
- ASP.NET设置焦点到输入框
- MACD 的数学解释
- 河南省高中毕业会考计算机考试,河南高中会考等级划分标准
- RAID技术详细解答之一:入门基础篇
- linux salt生成,51CTO博客-专业IT技术博客创作平台-技术成就梦想
- python中变量怎么定义_python中的变量的使用定义以及使用规则
- 软件工程知识点总结(含各类软件工程各类图的画法)
- 机器学习(四)神经网络
- ST Visual Programmer(STVP)给STM8系列芯片烧录程序方法
- doc pdf html txt mht,mht文件格式介绍
- Method annotated with @Bean is called directly. Use dependency injection instead
- item2vec--word2vec在推荐领域的使用
- centOS最全下载地址
- Web API-添加Swagger,SQL Server,记录并导出到Excel
- matlab求函数的极限
- 对自动驾驶仿真软件研发方向的看法