Встроенные функции, доступные в opencv2 Python, чтобы найти расстояние между изображениями

Мне нужна более быстрая нормализованная взаимная корреляция, с помощью которой я могу вычислить сходство между двумя изображениями. Я хочу знать, есть ли какие-либо встроенные функции, которые могут найти корреляцию между двумя изображениями, кроме scipy.signal.correlate2d() и matplotlib xcorr (). Если эти две функции работают, может кто-нибудь показать мне пример, чтобы найти корреляцию между двумя изображениями.

path1='D:/image/cat1.jpg'
path2='D:/image/cat2.jpg'
corrCoefft = computeCorrelationCoefft(path1,path2)

1 ответ

Решение

OpenCV выполняет нормализацию взаимных корреляций с использованием функции matchTemplate с, например, CV_TM_CCORR_NORMED,

@Jonas предложил следующий код, чтобы использовать это и сравнить различные методы

img = cv2.imread(path1)
template = cv2.imread(path2)
methods = ['cv2.TM_CCOEFF', 'cv2.TM_CCOEFF_NORMED', 'cv2.TM_CCORR','cv2.TM_CCORR_NORMED',     'cv2.TM_SQDIFF', 'cv2.TM_SQDIFF_NORMED']
for i in range(len(methods)):
    result[i] = cv2.matchTemplate(img,template,methods[i])
    print ("Method {}  : Result{}") .format(method[i],result[i])
Другие вопросы по тегам