图像对于OpenCV imshow窗口来说太大了,如何使其变小?

6ie5vjzr  于 2022-12-04  发布在  其他
关注(0)|答案(1)|浏览(589)

我正在比较两张图片-一张完整的图片和同一张图片的一小部分。如果找到匹配的图片,则会在包含较小图片的那部分图片周围画一个矩形框。
为了实现这一点,我使用了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()
prdp8dxp

prdp8dxp1#

imshow之前,用WINDOW_NORMAL标志调用namedWindow(),这使得它可以调整大小,并将图像缩放到窗口的大小。

cv.namedWindow("img", cv.WINDOW_NORMAL)
# then imshow()...

相关问题