案例@Fu Xianjun. All Rights Reserved.
使用代码检测多个印花
图例:
首先需要导入的库:
import cv2
import numpy as np
#Matplotlib是RGB
import matplotlib.pyplot as plt
%matplotlib inline
#定义显示图片的函数,避免重复代码
def cv_show(name, img):
cv2.imshow(name, img)
cv2.waitKey()
cv2.destroyAllWindows()
代码:
#读取模板图片
template = cv2.imread("yinhua.png")
# cv_show("template",template)
img = cv2.imread("yinhua2.png")
#获取到我们模板的大小h,w
h, w = template.shape[:2]
#开始模板匹配过程(采用计算归一化平方不同,计算值越接近0,越相关)
res = cv2.matchTemplate(img, template, cv2.TM_SQDIFF_NORMED)
threshold = 0.01
loc = np.where(res<=threshold)
for pt in zip(*loc[::-1]):
cv2.rectangle(img, pt, (pt[0] + w, pt[1] + h), 255, 1)
#因为matplotlib显示为RGB图像,做一次色彩空间空间转换
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
plt.imshow(img, cmap='gray')
最后结果: