flann knnmatch中的OpenCV错误

时间:2017-01-17 05:43:14

标签: opencv image-processing feature-detection surf flann

我正在编写基于冲浪的图像匹配算法。 我用400粗麻布阈值初始化冲浪:

surf = cv2.SURF(400)

并且做了匹配。

但它运行得太慢(在大型图像集上)。 然后我决定最初进行光测试,然后进行深度测试。所以我将粗麻布阈值改为1200。

surf = cv2.SURF(1200)

现在快得多。

matches = flann.knnMatch(des1,des2,k=2)

但是在某些图片上会抛出以下错误:

    OpenCV Error: Assertion failed ((globalDescIdx>=0) && (globalDescIdx < size())) in getLocalIdx, file /tmp/opencv-2.4.10/modules/features2d/src/matchers.cpp, line 163
Exception in thread Thread-1:
Traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 810, in __bootstrap_inner
    self.run()
  File "/usr/lib/python2.7/threading.py", line 763, in run
    self.__target(*self.__args, **self.__kwargs)
  File "indexThreadsDeep.py", line 97, in threadRun
    if(imageMatch(qDes,tDes)):
  File "indexThreadsDeep.py", line 69, in imageMatch
    matches = flann.knnMatch(des1,des2,k=2)
error: /tmp/opencv-2.4.10/modules/features2d/src/matchers.cpp:163: error: (-215) (globalDescIdx>=0) && (globalDescIdx < size()) in function getLocalIdx

1 个答案:

答案 0 :(得分:1)

问题出现了,因为由于高激情阈值,在某些图像中只有一个关键点。但是在knnMatch中我正在寻找2个最近的邻居。