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实现查询IP地址所在地
Mar 29 Python
python 借助numpy保存数据为csv格式的实现方法
Jul 04 Python
python机器学习之KNN分类算法
Aug 29 Python
python/sympy求解矩阵方程的方法
Nov 08 Python
python re.sub()替换正则的匹配内容方法
Jul 22 Python
Python获取统计自己的qq群成员信息的方法
Nov 15 Python
Keras 实现加载预训练模型并冻结网络的层
Jun 15 Python
Python读取多列数据以及用matplotlib制作图表方法实例
Sep 23 Python
python 爬取小说并下载的示例
Dec 07 Python
详解Pycharm第三方库的安装及使用方法
Dec 29 Python
selenium+headless chrome爬虫的实现示例
Jan 08 Python
Python编程编写完善的命令行工具
Sep 15 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
这东西价格,可以买几台TECSUN S-2000
2021/03/02 无线电
PHP命名空间和自动加载类
2016/04/03 PHP
Thinkphp 框架配置操作之配置加载与读取配置实例分析
2020/05/15 PHP
JQuery this 和 $(this) 的区别
2009/08/23 Javascript
JavaScript判断窗口是否最小化的代码(跨浏览器)
2010/08/01 Javascript
基于jquery 的一个progressbar widge
2010/10/29 Javascript
jquery点击页面任何区域实现鼠标焦点十字效果
2013/06/21 Javascript
js动态添加事件并可传参数示例代码
2013/10/21 Javascript
jquery的live使用注意事项
2014/02/18 Javascript
js生成的验证码的实现与技术分析
2014/09/17 Javascript
简介JavaScript中的getUTCFullYear()方法的使用
2015/06/10 Javascript
jQuery实现简单的列表式导航菜单效果代码
2015/08/31 Javascript
ECharts仪表盘实例代码(附源码下载)
2016/02/18 Javascript
Javascript中常用类型的格式化方法小结
2016/12/26 Javascript
JS实现DIV高度自适应窗口示例
2017/02/16 Javascript
利用ES6语法重构React组件详解
2017/03/02 Javascript
轻松实现jQuery添加删除按钮Click事件
2017/03/13 Javascript
jquery实现tab键进行选择后enter键触发click行为
2017/03/29 jQuery
nodejs async异步常用函数总结(推荐)
2017/11/17 NodeJs
webpack4.x打包过程详解
2018/07/18 Javascript
swiper在angularjs中使用循环轮播失效的解决方法
2018/09/27 Javascript
vue+vuex+axios从后台获取数据存入vuex,组件之间共享数据操作
2020/07/31 Javascript
Python多线程下载文件的方法
2015/07/10 Python
TensorFlow实现随机训练和批量训练的方法
2018/04/28 Python
Python读取mat文件,并转为csv文件的实例
2018/07/04 Python
详解python中递归函数
2019/04/16 Python
解决python文件双击运行秒退的问题
2019/06/24 Python
Python 3.9的到来到底是意味着什么
2020/10/14 Python
python tkinter实现下载进度条及抖音视频去水印原理
2021/02/07 Python
Mountain Warehouse澳大利亚官网:欧洲家庭户外品牌倡导者
2016/11/20 全球购物
打架检讨书50字
2014/01/11 职场文书
初中家长寄语
2014/04/02 职场文书
上海世博会口号
2014/06/19 职场文书
教你用Python写一个植物大战僵尸小游戏
2021/04/25 Python
解决goland 导入项目后import里的包报红问题
2021/05/06 Golang
浅谈音视频 pts dts基本概念及理解
2022/08/05 数码科技