python opencv matchTemplate 是否实现了掩码功能?

标签 python opencv opencv3.0

OpenCV, as of version 3.0.0, added a mask feature到 matchTemplate 方法。它通过在模板上定义掩码来支持与透明模板进行模板匹配。我下面的 python 程序工作正常,但如果我将 mask 参数添加到 cv2.matchTemplate 调用,它会抛出错误:

OpenCV Error: The function/feature is not implemented () in matchTemplateMask, file /Users/jared.rada/dev/opencv/modules/imgproc/src/templmatch.cpp, line 894
Traceback (most recent call last):
File "masked.py", line 13, in <module>
res = cv2.matchTemplate(img, tmpl, cv2.TM_CCOEFF_NORMED, data, mask)
cv2.error: /Users/jared.rada/dev/opencv/modules/imgproc/src/templmatch.cpp:894: error: (-213)  in function matchTemplateMask`

我的源代码:

import sys
import numpy as np
import cv2


img = cv2.imread('./image.jpg')
tmpl = cv2.imread('./tmpl.png')
mask = cv2.imread('./mask.png')
w, h = tmpl.shape[:-1]
data = np.zeros((h, w, 3), dtype=np.uint8)

res = cv2.matchTemplate(img, tmpl, cv2.TM_CCOEFF_NORMED, data, mask)

min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)

top_left = max_loc
bottom_right = (top_left[0] + w, top_left[1] + h)
cv2.rectangle(img, top_left, bottom_right, (0, 0, 255), 2)

cv2.imshow("images", np.hstack([img]))
cv2.waitKey(0)

我如何知道 python 绑定(bind)是否支持掩码功能?

最佳答案

有一个简单的答案:查看 src code ,你会发现,它只针对 method == CV_TM_SQDIFFmethod == CV_TM_CCORR_NORMED 实现,换句话说,不是你想要的 cv2.TM_CCOEFF_NORMED

关于python opencv matchTemplate 是否实现了掩码功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35658323/

相关文章:

opencv - 自动驾驶汽车如何清除车道上的障碍物?

c++ - 灰度图像创建 16 位

python - 在 Python 中导入按顺序命名的多个文件

python lxml.html.parse不读取url

c - Features2d 中的函数检测

python - opencv python 检测多尺度 api

opencv - 用于洞穴绘画提取的图像预处理

c++ - 当我直接解析 Mat 时,未检测到 OpenCv Aruco 标记

python list n files then next n files in a directory并将其映射到映射器函数

python - 多个条件下的数据框切片 Python