我正在尝试更新我的代码以使用cv2.SURF()而不是cv2.FeatureDetector_create("SURF")和cv2.DescriptorExtractor_create("SURF").但是在检测到关键点后我无法获取描述符.什么是正确的打电话方式SURF.detect?
我试过跟随OpenCV文档,但我有点困惑.这就是它在文档中所说的内容.
Python: cv2.SURF.detect(img, mask) ? keypoints¶
Python: cv2.SURF.detect(img, mask[, descriptors[, useProvidedKeypoints]]) ? keypoints, descriptors
Run Code Online (Sandbox Code Playgroud)
在进行第二次调用时如何传递关键点SURF.detect?
我想使用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吗?
我试图重写这里描述的代码.使用python API for Opencv.
代码的第3步有以下几行:
FlannBasedMatcher matcher;
std::vector< DMatch > matches;
matcher.match( descriptors_object, descriptors_scene, matches );
Run Code Online (Sandbox Code Playgroud)
我在OpenCV引用中反复查看,但发现没有任何与python中的FlannBasedMatcher或其他可以完成工作的对象有关.
有任何想法吗?
注意:我使用的是OpenCV 2.3.1和Python 2.6