使用knnMatch与OpenCV + Python时出错

Ser*_*gio 10 python opencv runtime-error

我想使用Python + OpenCV匹配两张图片.我使用SURF从两者中提取关键点和描述符.现在,我需要匹配这些描述符,因此我决定使用Flann Matcher.

flann_params = dict(algorithm = FLANN_INDEX_KDTREE,trees = 4)    
matcher = cv2.FlannBasedMatcher(flann_params, {})
Run Code Online (Sandbox Code Playgroud)

但是当我尝试将knnMatch与描述符(desc1,desc2)一起使用时,openCV会抛出异常.

raw_matches=matcher.knnMatch(np.asarray(desc1),np.asarray(desc2), 2)
Run Code Online (Sandbox Code Playgroud)

例外情况如下:

raw_matches=matcher.knnMatch(np.asarray(desc1),np.asarray(desc2), 2) #2
cv2.error: /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_graphics_opencv/opencv/work/OpenCV-2.4.2/modules/flann/src/miniflann.cpp:299: error: (-210) type=6
 in function buildIndex_
Run Code Online (Sandbox Code Playgroud)

我怎样才能正确使用knnMatch?这是一个Bug吗?

Ser*_*gio 11

我使用函数np.asarray()使用正确的数据类型解决了这个问题

raw_matches=matcher.knnMatch(np.asarray(desc1,np.float32),np.asarray(desc2,np.float32), 2) #2
Run Code Online (Sandbox Code Playgroud)

  • 错误消失了,但是找不到任何东西。 (2认同)