猿问

模板与 OpenCV 匹配时如何避免误报?

我想使用 OpenCV 和 Python 制作一个程序来检查较小的图像是否在较大的图像中。


我知道较大图像中的内容,但较小图像每次都可能发生变化,因此避免误报对我来说很重要。


我已经使用cv2.matchTemplate该cv2.TM_CCOEFF_NORMED模式来检查置信度,如果较小的图像只是完整图像的裁剪版本,则效果很好。


但是,例如,如果较小的图像是 1x1 白色像素,则会出现问题。我的大图像中有很多空白,我不希望它匹配。


这是我的代码:


#!/usr/bin/env python


import cv2



def main():

    source = cv2.imread('source.png', 0)

    template = cv2.imread('template.png', 0)


    res = cv2.matchTemplate(source, template, cv2.TM_CCOEFF_NORMED)

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


    if max_val < 0.9:

        print 'Confidence score is less than 0.9, no match found.'

        return


    print 'Match found!'


if __name__ == '__main__':

    main()

我该如何改进?我想有一种方法可以检查匹配项是否至少为特定大小(例如 50x50),以便在使用小图像作为模板时系统不会中断,但我不确定。


汪汪一只猫
浏览 157回答 2
2回答
随时随地看视频慕课网APP

相关分类

Python
我要回答