获取matchTemplate()中每个对象的mean()值

时间:2019-04-25 00:24:37

标签: python opencv mean matchtemplate

我正在尝试使用matchTemplate在更大的图像中检测多个图像,并使用这些图像获取它们的mean()颜色值,以便以后进行比较并确定它们是否具有所需的颜色。

这是我到目前为止所拥有的:

        w, h = template.shape[::-1]
        method = cv2.TM_CCOEFF_NORMED
        res = cv2.matchTemplate(images[1], template, method)
        min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)
        top_left = max_loc
        matches = np.where(res >= threshold)

        for (x, y) in zip(matches[1], matches[0]):
            cv2.rectangle(images[0], (x, y), (x + w, y + h), [0, 255, 255], 2)
            color = cv2.mean(images[0][top_left[1]:top_left[1] + h, top_left[0]:top_left[0] + w])
        cv2.imwrite('./TESTPLSWORK.png', images[0])

我尝试实现一个forloop,其中每次我使用minMaxLoc时,获取其max_loc值以使用cv2.mean。不幸的是,它仅对数组的第一个元素(匹配输出)进行处理。那是我的主意,但是使用np弹出一个“ matches”的值。在进行第一次迭代后删除不起作用,并且简单地破坏了numpy数组结构。

这将是找到两个与模板匹配的对象的匹配结果:

(array([231, 457], dtype=int32), array([ 957, 1312], dtype=int32))

需要使我的想法可行的输出:

(array([231], dtype=int32), array([957], dtype=int32))

0 个答案:

没有答案