介绍
这篇文章给大家介绍怎么在Python中利用Opencv识别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 得到matplotlib import  pyplot as  plt #读取检测图像 时间=img cv2.imread (& # 39; img8.bmp& # 39;,, 0) #读取模板图像 template1=cv2.imread (& # 39; moban1.bmp& # 39;,, 0) template2=? #建立模板列表 模板=[template1 template2、template3 template4] #,模板匹配:归一化相关系数匹配方法 res1=cv2.matchTemplate (img, template1,, cv2.TM_CCOEFF_NORMED) 它=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 模板[j] .shape[2],, #,计算模板图像的高和宽,行→h,关口→w pes=cv2.matchTemplate (img,模板[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(模板[j],提出=& # 39;灰色# 39;) plt.title (& # 39; pcb 类型# 39;),plt.xticks ([]), plt.yticks ([]) #绘制检测图像 plt.subplot (122), plt.imshow (img,提出=& # 39;灰色# 39;) plt.title (& # 39; img # 39;),, plt.xticks ([]), plt.yticks ([]) plt.show ()
关于怎么在Python中利用Opencv识别PCB板图片就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。