Python,opencv匹配模板错误

Posted

技术标签:

【中文标题】Python,opencv匹配模板错误【英文标题】:Python, opencv matchtemplate error 【发布时间】:2018-02-15 23:40:58 【问题描述】:

您好,我正在尝试使用 matchTamplate 函数,但它给出了错误

OpenCV 错误:在 cv::matchTemplate 文件 C:\ 中断言失败 ((depth == 0 || depth == 5) && type == _templ.type() && _img.dims()

这是代码

import cv2
import numpy as np 

img = cv2.imread("tempmatch1.jpg")
img2gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

template = cv2.imread("tempmatch2.jpg")
w, h,_ = template.shape[::-1]

res = cv2.matchTemplate(img2gray, template, cv2.TM_CCOEFF_NORMED)
threshold = 0.80
loc = np.where(res >= threshold)

for pt in zip(*loc[::-1]):
    cv2.rectangle(img, pt, (pt[0]+w, pt[1]+h), (0,0,255), 2)
cv2.imshow("detected", img)

k= cv2.waitKey(5) & 0xFF
if k==27:
    cv2.destroyAllWindows()

【问题讨论】:

【参考方案1】:

我怀疑该错误是在告诉您该模板与其所应用的图像不兼容。在这种情况下,一个彩色模板和一个灰度图像。

代替

res = cv2.matchTemplate(img2gray, template, cv2.TM_CCOEFF_NORMED)

试试

res = cv2.matchTemplate(img, template, cv2.TM_CCOEFF_NORMED)

【讨论】:

谢谢你,它工作得很好,我只想说当我做模板灰度时它工作得很好,但当我像你说的那样得到更好的结果 如果颜色对匹配不重要,灰度模板也可能快一点。

以上是关于Python,opencv匹配模板错误的主要内容,如果未能解决你的问题,请参考以下文章

opencv python:模板匹配

使用Python,OpenCV进行模板匹配单对象多对象及多尺度模板匹配

使用Python+OpenCV进行图像模板匹配(Match Template)

Python+OpenCV图像处理—— 模板匹配

Python+OpenCV图像处理—— 模板匹配

使用Python+OpenCV进行图像模板匹配(Match Template)