Встроенные функции, доступные в 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])