Замена SIFT на BRISK - это OpenCV, вызывающая ошибку - PullRequest
0 голосов
/ 26 апреля 2019

Я пытаюсь заменить SIFT на BRISK в моем алгоритме , так как согласно тому, что я прочитал , это хорошая замена.Однако, когда я изменяю SIFT_create() на BRISK_create(), я получаю error -201.Кто-нибудь знает, что это значит / как это исправить?

СООТВЕТСТВУЮЩИЙ КОД

img1 = cv2.imread("images/test/IMG_6651.JPG", 0)
img2 = cv2.imread("images/test/IMG_6652.JPG", 0)

# Initiate BRISK detector
brisk = cv2.BRISK_create()
kp1, des1 = brisk.detectAndCompute(img1, None)
kp2, des2 = brisk.detectAndCompute(img2, None)

# FLANN parameters
FLANN_INDEX_KDTREE = 1
index_params = dict(algorithm=FLANN_INDEX_KDTREE, trees=5)
search_params = dict(checks=30)
flann = cv2.FlannBasedMatcher(index_params, search_params)
matches = flann.knnMatch(des1, des2, k=2)
# store all the good matches as per Lowe's ratio test.

for m, n in matches:
    if m.distance < 0.65 * n.distance:
        mC = kp2[m.trainIdx].pt
        nC = kp2[n.trainIdx].pt
        # DO SOME STUFF WITH mC and nC

СООБЩЕНИЕ ОБ ОШИБКЕ

File "siftMatching.py", line 83, in siftMatcher
    matches = flann.knnMatch(des1, des2, k=2)
cv2.error: OpenCV(4.1.0) /Users/travis/build/skvark/opencv-python/opencv/modules/flann/src/miniflann.cpp:315: error: (-210:Unsupported format or combination of formats) in function 'buildIndex_'
> type=0
> 

1 Ответ

0 голосов
/ 26 апреля 2019

Если вы посмотрите на код код минифлана

Для этого требуется featureType = CV_32F, а тип вашего дескриптора - uint8. Поэтому измените тип данных des1 и des2 на float32.

>>> des1 = des1.astype('float32')
>>> des2 = des2.astype('float32')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...