Opencv+Python识别PCB板图片的步骤


Posted in Python onJanuary 07, 2021

任务要求:

基于模板匹配算法识别PCB板型号

使用工具:

Python3、OpenCV

使用模板匹配算法,模板匹配是一种最原始、最基本的模式识别方法,研究某一特定对象物的图案位于图像的什么地方,进而识别对象物,模板匹配具有自身的局限性,主要表现在它只能进行平行移动,即原图像中的匹配目标不能发生旋转或大小变化。

事先准备好待检测PCB与其对应的模板:

Opencv+Python识别PCB板图片的步骤

子模版:

Opencv+Python识别PCB板图片的步骤

基本流程如下:

1、在整个图像区域发现与给定子图像匹配的小块区域

2、选取模板图像T(给定的子图像)

3、另外需要一个待检测的图像——源图像S

4、工作方法:在检测图像上,从左到右,从上到下计算模板图像与重叠, 子图像的匹配度,匹配程度越大,两者相同的可能性就越大。

OpenCV提供了6种模板匹配算法:

平方差匹配法CV_TM_SQDIFF;

归一化平方差匹配法CV_TM_SQDIFF_NORMED;

相关匹配法CV_TM_CCORR;

归一化相关匹配法CV_TM_CCORR_NORMED;

相关系数匹配法CV_TM_CCOEFF;

归一化相关系数匹配法CV_TM_CCOEFF_NORMED;

后面经过实验,我们主要是从以上的六种中选择了归一化相关系数匹配法CV_TM_CCOEFF_NORMED,基本原理公式为:

 代码部分展示:

import cv2
import numpy as np
from matplotlib import pyplot as plt

#读取检测图像
img = cv2.imread('img8.bmp', 0)
#读取模板图像
template1=cv2.imread('moban1.bmp', 0)
template2=......
#建立模板列表
template=[template1,template2,template3,template4]
# 模板匹配:归一化相关系数匹配方法
res1=cv2.matchTemplate(img, template1, cv2.TM_CCOEFF_NORMED)
res2=cv2.matchTemplate(......)
#提取相关系数
min_val1, max_val1, min_loc1, max_loc1 =cv2.minMaxLoc(res1)
min_val2, ......

#相关系数对比(max_val),越接近1,匹配程度越高
max_val=[1-max_val1,1-max_val2,1-max_val3,1-max_val4]
j=max_val.index(min(max_val))

#根据提取的相关系数得出对应匹配程度最高的模板
h, w = template[j].shape[:2]  # 计算模板图像的高和宽 rows->h, cols->w
pes=cv2.matchTemplate(img, template[j], cv2.TM_CCOEFF_NORMED) #模板匹配
in_val, ax_val, in_loc, ax_loc =cv2.minMaxLoc(pes)

#在原图中框出模板匹配的位置
left_top = ax_loc  # 左上角
right_bottom = (left_top[0] + w, left_top[1] + h)  # 右下角
cv2.rectangle(img, left_top, right_bottom, 255, 2) # 画出矩形位置
#绘制模板图像
plt.subplot(121), plt.imshow(template[j], cmap='gray')
plt.title('pcb type'),plt.xticks([]), plt.yticks([])
#绘制检测图像
plt.subplot(122), plt.imshow(img, cmap='gray')
plt.title('img'), plt.xticks([]), plt.yticks([])
plt.show()

实验结果:

Opencv+Python识别PCB板图片的步骤

需要完整代码以及图片素材的,请留下评论可与博主进行联系。

以上就是Opencv+Python识别PCB板图片的步骤的详细内容,更多关于Opencv+Python识别PCB板的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python正则表达式re模块详细介绍
May 29 Python
使用Python3中的gettext模块翻译Python源码以支持多语言
Mar 31 Python
Python yield 使用浅析
May 28 Python
Python中的zipfile模块使用详解
Jun 25 Python
Python 遍历子文件和所有子文件夹的代码实例
Dec 21 Python
微信跳一跳python代码实现
Jan 05 Python
Python实现注册、登录小程序功能
Sep 21 Python
在PyCharm中三步完成PyPy解释器的配置的方法
Oct 29 Python
python3.7简单的爬虫实例详解
Jul 08 Python
Python unittest discover批量执行代码实例
Sep 08 Python
python 实现控制鼠标键盘
Nov 27 Python
Pandas直接读取sql脚本的方法
Jan 21 Python
Django使用django-simple-captcha做验证码的实现示例
Jan 07 #Python
python 实现百度网盘非会员上传超过500个文件的方法
Jan 07 #Python
Django权限控制的使用
Jan 07 #Python
详解Django关于StreamingHttpResponse与FileResponse文件下载的最优方法
Jan 07 #Python
Jupyter Notebook添加代码自动补全功能的实现
Jan 07 #Python
jupyter notebook更换皮肤主题的实现
Jan 07 #Python
基于 Python 实践感知器分类算法
Jan 07 #Python
You might like
使用PHP计算两个路径的相对路径
2013/06/14 PHP
jQueryUI写一个调整分类的拖放效果实现代码
2012/05/10 Javascript
js动态添加onload、onresize、onscroll事件(另类方法)
2012/12/26 Javascript
javascript原型继承工作原理和实例详解
2016/04/07 Javascript
bootstrap组件之导航组件使用方法
2017/01/19 Javascript
javaScript基础详解
2017/01/19 Javascript
requirejs按需加载angularjs文件实例
2017/06/08 Javascript
jQuery pagination分页示例详解
2018/10/23 jQuery
实现高性能javascript的注意事项
2019/05/27 Javascript
细说Vue组件的服务器端渲染的过程
2019/05/30 Javascript
Javascript和jquery在selenium的使用过程
2019/10/31 jQuery
使用Bootstrap做一个朝代历史表
2019/12/10 Javascript
[02:42]完美大师赛主赛事淘汰赛第三日观众采访
2017/11/25 DOTA
使用Python3 编写简单信用卡管理程序
2016/12/21 Python
使用Python对Access读写操作
2017/03/30 Python
python中itertools模块zip_longest函数详解
2018/06/12 Python
Python WSGI的深入理解
2018/08/01 Python
Python生成器generator用法示例
2018/08/10 Python
Python ORM框架Peewee用法详解
2020/04/29 Python
Python+unittest+DDT实现数据驱动测试
2020/11/30 Python
利用CSS3伪元素实现逐渐发光的方格边框
2017/05/07 HTML / CSS
canvas 阴影和图形变换的示例代码
2018/01/02 HTML / CSS
乌克兰香水和化妆品网站:Notino.ua
2018/03/26 全球购物
施华洛世奇中国官网:SWAROVSKI中国
2020/06/16 全球购物
小学教师事迹材料
2014/01/13 职场文书
安全生产实施方案
2014/02/23 职场文书
《北京的春节》教学反思
2014/04/07 职场文书
工会主席事迹材料
2014/06/03 职场文书
外贸会计专业自荐信
2014/06/22 职场文书
英语教研活动总结
2014/07/02 职场文书
初中国旗下的演讲稿
2014/08/28 职场文书
孝敬父母的活动方案
2014/08/31 职场文书
2014年妇女工作总结
2014/12/06 职场文书
幼儿园欢迎词范文
2015/01/26 职场文书
小学2016年“我们的节日·重阳节”活动总结
2016/04/01 职场文书
Node.js实现断点续传
2021/06/23 Javascript