我使用了这个答案并编写了自己的程序,但我有一个具体的问题。
如果图像中没有对象,
如果图像中没有对象,
matchTemplate
不会抛出错误,并且我不知道任何方法来检查matchTemplate
是否找到了对象,是否可以给我建议或者给我一个检查这个问题的函数名称。matchTemplate
不会抛出错误,并且我不知道任何方法来检查matchTemplate
是否找到了对象,是否可以给我建议或者给我一个检查这个问题的函数名称。matchTemplate()
返回一个矩阵,其值表示对象在该像素中心的概率。如果您知道那里有对象(且仅有一个对象),则只需查找最大值的位置。
如果您不知道,则必须找到最大值,如果它高于某个阈值,则应该存在您的对象。
现在,选择该阈值很棘手-您需要为您的应用程序找到好的阈值。当然,您会有一些误报(当没有对象时,但最大值大于阈值)和一些漏报(您的对象没有创建足够大的峰值)
选择阈值的方法是收集包含或不包含对象的相当大的图像数据库,并统计对象在内时峰值大小,以及在没有对象时峰值大小,并选择最佳分离两个类别的阈值
res = cv2.matchTemplate(img_gray,template,cv2.TM_CCOEFF_NORMED)
threshold = 0.20
loc = np.where( res >= threshold)
if len(loc[0])>0:
detection = True
else:
detection = False