Соответствие шаблона возвращает ноль

Я просто использую сопоставление шаблонов с методом cv2.TM_CCOEFF_NORMED с использованием opencv. Разница в том, что и эталонное изображение, и деформированное изображение делятся на маленькие части для разрешения 128х108. Как правило, он работает хорошо, но иногда он возвращает ноль, даже если обе части почти одинаковы. Ниже приведены примерные пары изображений, одна из которых имеет линию с интенсивностью "1", но все остальные значения равны нулю. Есть ли конкретная причина, почему это не удается в этом примере? Может из-за низкого разрешения изображений?

Заранее спасибо.

grab_image

ref_image

import cv2
import numpy as np

np.set_printoptions(threshold='nan')

def main():

    img_ref = cv2.imread('folderoftheimage')
    img_grab = cv2.imread('folderoftheimage')

    max_val_array = []
    template_matching_array = []
    # Apply template Matching
    res = cv2.matchTemplate(img_ref,img_grab,cv2.TM_CCOEFF_NORMED)
    min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)
    max_val_array.append(max_val)
    print "min_val", min_val
    print "max_val", max_val
    print "min_loc", min_loc
    print "max_loc", max_loc

    template_matching_array.append(np.min(max_val_array))
    index_min = max_val_array.index(np.min(max_val_array))
    print "template matching", template_matching_array
    print "zero element", index_min

main()

0 ответов

Другие вопросы по тегам