opencv_contrib中的函数在cv2.so中缺失?
在opencv3.0-dev版本中,大部分非免费功能都被移到了opencv_contrib这个模块里。我已经把它和opencv_contrib一起编译过了,所有的xfeatures2d测试都通过了。
不过,cv2里面还是没有SIFT()或SURF()这些功能。以前的一个小技巧BUILD_NEW_PYTHON_SUPPORT现在不管用了。它显示:
CMake Warning:
Manually-specified variables were not used by the project:
BUILD_NEW_PYTHON_SUPPORT
有没有人能告诉我应该用哪个标志来启用这些功能呢?
这和我在modules/python/common.cmake文件里找到的以下代码有关系吗?
# module blacklist
ocv_list_filterout(candidate_deps "^opencv_cud(a|ev)")
ocv_list_filterout(candidate_deps "^opencv_adas$")
ocv_list_filterout(candidate_deps "^opencv_face$")
ocv_list_filterout(candidate_deps "^opencv_matlab$")
ocv_list_filterout(candidate_deps "^opencv_tracking$")
ocv_list_filterout(candidate_deps "^opencv_optflow$")
ocv_list_filterout(candidate_deps "^opencv_bgsegm$")
ocv_list_filterout(candidate_deps "^opencv_xfeatures2d$")
ocv_list_filterout(candidate_deps "^opencv_ximgproc$")
ocv_list_filterout(candidate_deps "^opencv_xphoto$")
ocv_list_filterout(candidate_deps "^opencv_ts$")
ocv_add_module(${MODULE_NAME} BINDINGS OPTIONAL ${candidate_deps})
ocv_module_include_directories(
"${PYTHON_INCLUDE_PATH}"
${PYTHON_NUMPY_INCLUDE_DIRS}
"${PYTHON_SOURCE_DIR}/src2"
)
看起来所有额外的模块都被列入黑名单了?!
哦,似乎在提交31df47b6eaeb753a77f4d0cc3f4225c5c40682f6之后,大部分opencv_contrib的功能都被列入黑名单了。
所以我想,如果我想用Python的话,根本就不应该使用opencv 3.0。
1 个回答
1
首先,确保你的 cv2
里面有 xfeatures2d
这个子模块:可以输入 help(cv2)
来查看。
你也可以通过 help(cv2.xfeatures2d)
来查看这个子模块的具体说明。
接下来,试试 sift = cv2.xfeatures2d.SIFT_create()
来创建一个 SIFT 对象。然后用 kp, des = sift.detectAndCompute(img, None)
来提取关键点和描述符。