Функции cv2.drawMatches
и cv2.drawMatchesKnn
недоступны в новых версиях OpenCV 2.4. @rayryeng предоставил lightweight alternative, который работает как для вывода DescriptorMatcher.match
. Разница с DescriptorMatcher.knnMatch
заключается в том, что совпадения возвращаются в виде списка списков. Чтобы использовать альтернативу @rayryeng, матчи должны быть извлечены в 1-D список.
Например, Brute-Force Matching with SIFT Descriptors and Ratio Test учебник может быть изменен так:
# BFMatcher with default params
bf = cv2.BFMatcher()
matches = bf.knnMatch(des1,des2, k=2)
# Apply ratio test
good = []
for m,n in matches:
if m.distance < 0.75*n.distance:
# Removed the brackets around m
good.append(m)
# Invoke @rayryeng's drawMatches alternative, note it requires grayscale images
gray1 = cv2.cvtColor(img1,cv2.COLOR_BGR2GRAY)
gray2 = cv2.cvtColor(img2,cv2.COLOR_BGR2GRAY)
drawMatches(gray1,kp1,gray2,kp2,good)
OpenCV Версия: 2.4.7 – rohangulati
Используйте OpenCV версии 3.x. Построить из источника в главной ветке –
'IMP - это учебное пособие предназначено для версии OpenCV 3x. Not OpenCV 2x', он четко говорит на странице README. Вы этого не читали? –