You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用OpenCV执行模板匹配时如何放大显示输出图像

模板匹配输出图像过小的解决方案

你当前代码中plt.show(1900,2000)为错误用法,plt.show()不接收尺寸参数,显示尺寸需要提前通过画布或窗口配置调整。

方案1:调整matplotlib显示尺寸

  • 提前设置画布尺寸,单位为英寸,配合默认100dpi可直接换算为像素尺寸,比如要输出1900*2000像素的显示效果,设置plt.figure(figsize=(19, 20), dpi=100)即可
  • OpenCV默认读取图像为BGR通道,matplotlib渲染使用RGB通道,直接显示会出现颜色偏移,需要先做通道转换
  • plt.show()无需传入参数,直接调用即可

方案2:调整OpenCV imshow窗口尺寸

  • 默认OpenCV窗口为自适应尺寸不可调整,需要先创建可缩放窗口:cv2.namedWindow("Matched image", cv2.WINDOW_NORMAL)
  • 可通过resizeWindow固定窗口显示尺寸:cv2.resizeWindow("Matched image", 1900, 2000)
  • 需补充cv2.waitKey(0)和cv2.destroyAllWindows()防止窗口无响应或闪退

修改后的完整代码

import cv2
import numpy as np
from matplotlib import pyplot as plt
%matplotlib inline

img_rgb = cv2.imread('ddd/radiobutton.png')
img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)
template = cv2.imread('ddd/temp.png', 0)
height, width = template.shape[::]
res = cv2.matchTemplate(img_gray, template, cv2.TM_CCOEFF_NORMED)

# 显示匹配结果图,提前设置画布大小
plt.figure(figsize=(19, 20), dpi=100)
plt.imshow(res, cmap='gray')
plt.show()

min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)
top_left = min_loc 
bottom_right = (top_left[0]+ width, top_left[1]+height)
cv2.rectangle(img_rgb, top_left, bottom_right, (255, 0, 0), 10)

# --- 方案1:matplotlib显示带框图像(二选一即可) ---
# 转通道避免偏色
img_rgb_rgb = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2RGB)
plt.figure(figsize=(19, 20), dpi=100)
plt.imshow(img_rgb_rgb)
plt.show()

# --- 方案2:OpenCV显示带框图像(二选一即可) ---
# cv2.namedWindow("Matched image", cv2.WINDOW_NORMAL)
# cv2.resizeWindow("Matched image", 1900, 2000)
# cv2.imshow("Matched image", img_rgb)
# cv2.waitKey(0)
# cv2.destroyAllWindows()

内容的提问来源于stack exchange,提问作者EverydayDeveloper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 22:18:01