我正在比较两张图片-一张完整的图片和同一张图片的一小部分。如果找到匹配的图片,则会在包含较小图片的那部分图片周围画一个矩形框。
为了实现这一点,我使用了matchTemplate
方法。
代码按预期工作,但如果原始图像的尺寸为1000 PPI或更大,则在显示输出时会剪切图像,因此无法突出显示子图像。
有办法解决这个问题吗?
我的代码--〉
import cv2
import numpy as np
img = cv2.imread("C:\Images\big_image.png")
grey_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
template = cv2.imread("C:\Images\sub_image.png", 0)
w, h = template.shape[::-1]
res = cv2.matchTemplate(grey_img, template, cv2.TM_CCOEFF_NORMED)
print(res)
threshold = 0.9;
loc = np.where(res >= threshold)
print(loc)
for pt in zip(*loc[::-1]):
cv2.rectangle(img, pt, (pt[0] + w, pt[1] + h), (0, 0, 255), 2)
cv2.imshow("img", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
1条答案
按热度按时间prdp8dxp1#
在
imshow
之前,用WINDOW_NORMAL
标志调用namedWindow()
,这使得它可以调整大小,并将图像缩放到窗口的大小。