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 相关文章推荐
Linux下使用python自动修改本机网关代码分享
May 21 Python
Python利用ElementTree模块处理XML的方法详解
Aug 31 Python
Python使用文件锁实现进程间同步功能【基于fcntl模块】
Oct 16 Python
Python2.7.10以上pip更新及其他包的安装教程
Jun 12 Python
在Django中URL正则表达式匹配的方法
Dec 20 Python
python爬虫之爬取百度音乐的实现方法
Aug 24 Python
Python autoescape标签用法解析
Jan 17 Python
使用Python爬取弹出窗口信息的实例
Mar 14 Python
Python itertools.product方法代码实例
Mar 27 Python
Python使用jupyter notebook查看ipynb文件过程解析
Jun 02 Python
keras的三种模型实现与区别说明
Jul 03 Python
python用分数表示矩阵的方法实例
Jan 11 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
thinkphp3.2.2实现生成多张缩略图的方法
2014/12/19 PHP
正确的PHP匹配UTF-8中文的正则表达式
2015/05/13 PHP
几个有趣的Javascript Hack
2010/07/24 Javascript
Javascript学习笔记二 之 变量
2010/12/15 Javascript
判断js对象是否拥有某一个属性的js代码
2013/08/16 Javascript
javascript元素动态创建实现方法
2015/05/13 Javascript
JS实现的通用表单验证插件完整实例
2015/08/20 Javascript
jQuery实现仿百度首页滑动伸缩展开的添加服务效果代码
2015/09/09 Javascript
Javascript Function.prototype.bind详细分析
2016/12/29 Javascript
js中int和string数据类型互相转化实例
2019/01/16 Javascript
微信小程序开发(二):页面跳转并传参操作示例
2020/06/01 Javascript
详解vue-cli项目在IE浏览器打开报错解决方法
2020/12/10 Vue.js
Python标准库与第三方库详解
2014/07/22 Python
Python装饰器限制函数运行时间超时则退出执行
2019/04/09 Python
python远程连接MySQL数据库
2019/04/19 Python
django-filter和普通查询的例子
2019/08/12 Python
python实现的接收邮件功能示例【基于网易POP3服务器】
2019/09/11 Python
python线程信号量semaphore使用解析
2019/11/30 Python
浅谈PyQt5中异步刷新UI和Python多线程总结
2019/12/13 Python
浅谈keras中的后端backend及其相关函数(K.prod,K.cast)
2020/06/29 Python
基于CentOS搭建Python Django环境过程解析
2020/08/24 Python
Python JSON常用编解码方法代码实例
2020/09/05 Python
纯CSS3制作页面切换效果的实例代码
2019/05/30 HTML / CSS
整理的15个非常有用的 HTML5 开发教程和速查手册
2011/10/18 HTML / CSS
丝芙兰新加坡官网:Sephora新加坡
2018/12/04 全球购物
Tuckernuck官网:经典的美国品质服装、鞋子和配饰
2021/01/11 全球购物
中专生自荐信
2013/10/12 职场文书
什么是岗位职责
2013/11/12 职场文书
《月迹》教学反思
2014/02/19 职场文书
酒店总经理岗位职责
2014/03/17 职场文书
表彰大会主持词
2014/03/26 职场文书
品酒会策划方案
2014/05/26 职场文书
2014年加油站工作总结
2014/12/04 职场文书
工会积极分子个人总结
2015/03/03 职场文书
2015年学校安全管理工作总结
2015/05/11 职场文书
劳动模范获奖感言
2015/07/31 职场文书