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

OpenCV模板匹配无法获取正确匹配位置的问题求助

OpenCV模板匹配无法获取正确匹配位置的问题求助

我在使用模板匹配时遇到了麻烦,代码在处理简单的源图和模板图时能正常工作,但针对当前的图片,匹配位置总是不对。我试着调整过代码,可结果还是不正确,感谢您抽出时间帮忙解决!

相关图片

  • 模板图:pfizertemplate.png(显示带有"PFIZER"字样的标识区域)
  • 源图:pfizersource.jpg(包含多个药品包装盒的图片,其中存在目标模板对应的包装盒)

我当前使用的代码

import numpy as np
import cv2
import subprocess

# Assign template and target images
image = cv2.imread('pfizersource.jpg')
template = cv2.imread('pfizertemplate.png')

# Resize images
image = cv2.resize(image, (0, 0), fx=0.5, fy=0.5)
template = cv2.resize(template, (0, 0), fx=0.5, fy=0.5)

# Convert to grayscale
imageGray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
templateGray = cv2.cvtColor(template, cv2.COLOR_BGR2GRAY)

# Find template
result = cv2.matchTemplate(imageGray, templateGray, cv2.TM_CCOEFF)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)
top_left = max_loc
h, w = templateGray.shape
bottom_right = (top_left[0] + w, top_left[1] + h)
cv2.rectangle(image, top_left, bottom_right, (0, 0, 255), 4)

# Show result
cv2.imshow("Result", image)
cv2.imshow("Template", template)
cv2.moveWindow("Template", 10, 50);
cv2.moveWindow("Result", 150, 50);

print(top_left)
cv2.waitKey(0)
cv2.destroyAllWindows()
cv2.waitKey(1)

我已经尝试过使用不同的匹配方法,但仍然无法得到正确的结果:

  • cv2.TM_CCOEFF
  • cv2.TM_CCOEFF_NORMED
  • cv2.TM_CCORR
  • cv2.TM_CCORR_NORMED
  • cv2.TM_SQDIFF
  • cv2.TM_SQDIFF_NORMED

备注:内容来源于stack exchange,提问作者tech_taco

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 17:08:03