gpt4 book ai didi

python - opencv模式匹配不起作用

转载 作者:行者123 更新时间:2023-12-02 17:39:29 26 4
gpt4 key购买 nike

我需要找到图像中的所有图像,对于这个想法I have found great解决方案:

import cv2
import numpy as np

img_rgb = cv2.imread('source.png')
img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)
template = cv2.imread('block.png', 0)
w, h = template.shape[::-1]

res = cv2.matchTemplate(img_gray, template, cv2.TM_CCOEFF)

threshold = 0.8
loc = np.where(res >= threshold)

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

# cv2.imwrite('res.png', img_rgb)
cv2.imshow('output', img_rgb)
cv2.waitKey(0)

源数据:

/image/cE5bM.png (来源)

/image/BgzAA.png (模板)

我尝试使用此代码但失败了。

我现在看到的:
enter image description here

我期望得到的:
enter image description here

怎么了?
我正在使用 python 3.5 和 opencv 3.3.0.10

PS:很有意思的事 another solution工作完美,但只找到 1 个匹配项(最好的一个)

最佳答案

我绝对不是 OpenCV 方面的专家,它是各种模板匹配方法(尽管巧合的是,我已经开始使用它)。

但是,您的示例中有几件事很突出。

您使用 cv2.TM_CCOEFF 方法给出的结果普遍高于 0.8 阈值。所以图像中的任何地方都匹配给出一个巨大的红色矩形 Blob 。
如果您想使用此方法,请尝试使用 cv2.TM_CCOEFF_NORMED 将结果标准化为低于 1。

但我最好的 10 分钟尝试是使用;

method = cv2.TM_CCORR_NORMED

和设置
threshold = 0.512

这给了;

enter image description here

这是相当不令人满意的,因为必须相当精确地“调整”阈值以消除大部分不匹配。毫无疑问,有更好的方法来获得更可靠的出色匹配。

关于python - opencv模式匹配不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46741360/

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