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匹配模板错误的主要内容,如果未能解决你的问题,请参考以下文章
使用Python,OpenCV进行模板匹配单对象多对象及多尺度模板匹配