gpt4 book ai didi

python - 使用 python-openCv 进行简单模板匹配

转载 作者:太空宇宙 更新时间:2023-11-03 22:28:13 25 4
gpt4 key购买 nike

我正在尝试检测图像中的一些简单“红色图案”。这是我遵循的算法:1)过滤掉所有其他颜色而不是“红色”并创建黑白图像。我使用带有适当 mask 的“cvtColor”,然后应用“GaussianBlur”来降低噪音。到目前为止一切都很好。

2) 我使用如下函数“matchTemplate”来检测图像中的“箭头”模板。

问题:当“箭头”模板在照片中时,它被正确检测到。但是当它不在照片中时,算法会检测到其他一些错误的形状。有人可以修改代码,以便当箭头模板不在图片中时,不会检测到任何内容。这是我的代码:

    template = cv2.imread(address,0)
w, h = template.shape[::-1]
res = cv2.matchTemplate(self.image['blured'], template, cv2.TM_CCOEFF_NORMED)
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(self.image['blured'],top_left, bottom_right, 255, 2)
cv2.rectangle(self.image['normal'], top_left, bottom_right, 255,2)

结果如下: Correctly detected

enter image description here

错误检测: circle is detected as arrow

enter image description here

我的模板图像,我从主照片中完全裁剪了它:

enter image description here

任何人都可以发现我的错误吗?我是图像处理的新手。提前致谢。

最佳答案

您必须查看您的 max_val 并在其上设置一个阈值。

假设 max_val 在图像包含箭头时为 x1,在图像不包含箭头时为 x2,它应该是x1 > x2。作为第一个暂定值,您可以选择 threshold=(x1+x2)/2,然后如果 max_val > threshold 则在图像中找到模式,否则模式不存在找到了。

原因是matchTemplate

slides through image , compares the overlapped patches of size w \times hagainst templ using the specified method and stores the comparison results in result.

因此无论图像中是否存在箭头,您的图像 res 将始终具有最大值。

关于python - 使用 python-openCv 进行简单模板匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33919835/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com