怎么在Python中利用Opencv识别PCB板图片

  介绍

这篇文章给大家介绍怎么在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板图片就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。

怎么在Python中利用Opencv识别PCB板图片