Я хочу использовать Flann на основе Искателя в Python, как описано в http://opencv-python-tutroals.readthedocs.org/en/latest/py_tutorials/py_feature2d/py_matcher/py_matcher.htmlCV2 3.0.0 cv2.FlannBasedMatcher: flann.knnMatch бросает ошибку CV2
Поскольку я использую OpenCV 3.0.0, мне пришлось настроить код, касающийся инициализации SIFT-детектора. Остальные взяты без изменений
def calculateMatch(self):
# Initiate SIFT detector
sift = cv2.xfeatures2d.SIFT_create()
# find the keypoints and descriptors with SIFT
(kp1, desc1) = sift.detectAndCompute(self.image1,None)
(kp2, desc2) = sift.detectAndCompute(self.image2,None)
# FLANN parameters
FLANN_INDEX_KDTREE = 0
index_params = dict(algorithm = FLANN_INDEX_KDTREE, trees = 5)
search_params = dict(checks=50) # or pass empty dictionary
flann = cv2.FlannBasedMatcher(index_params,search_params)
matches = flann.knnMatch(desc1,desc2,k=2)
Когда я запускаю код, я получаю следующее сообщение:
cv2.error: cv2.cpp:161: error: (-215) The data should normally be NULL! in function allocate
в строке:
matches = flann.knnMatch(desc1,desc2,k=2)
Еще один комментарий: Если я использовать переборную команду, все работает нормально:
bf = cv2.BFMatcher()
matches = bf.knnMatch(desc1, desc2, k=2)
Спасибо. Это тоже решило мою проблему. –
Проблема также возникает в opencv3 3.1.0 menpo на py35_0. –