我已经尝试了几次,但大多数指南只告诉你如何在你构建OpenCV之后安装它。我有两次不成功的尝试这样做,这样做是很多工作,所以
答案 0 :(得分:3)
Berak对这个问题的opencv forums有一个答案,引用如下。基本上你可以从Git下载它,添加它during the cmake process你就可以了。
Beraks回答:
在3.0中,SIFT和SURF被移动到opencv_contrib repo
你需要克隆/ fork /下载它,并将其添加到你的(主要的 opencv)cmake;
cmake -DOPENCV_EXTRA_MODULES_PATH=<opencv_contrib>/modules
然后,在建成后,
#include "opencv2/xfeatures2d/nonfree.hpp" Ptr<xfeatures2d::SURF> surf = xfeatures2d::SURF::create(); // note extra namespace surf->detect(...); surf->compute(...);
不要忘记链接到opencv_xfeatures2d(.lib)
另外,回答问题#4。 OpenCV 3.0很好,我不会说它不可靠。
答案 1 :(得分:0)
最终找到了解决方案: 首先用必需的东西配置“ opencv-3.4”。我发现易于使用cmake-gui来配置opencv-3.4。在配置过程中,通过选中复选框和其他必需的东西来启用“ OPENCV_ENABLE_NONFREE”。
编译顺利,安装也完成了。 但是我无法使用像“ xfeatures2d”这样的“ nonfree” API,它被用作我的应用程序的一部分。
经过6到7个小时的努力,终于发现我们在配置opencv时需要包括“ opencv-contrib”模块。
已下载opencv-contrib-3.4.8,并在OPENCV_EXTRA_MODULE_PATH中的opencv配置期间提供“ ../ opencv-contrib-3.4.8 / modules”
然后使用cmake-gui进行配置,现在我可以看到“ opencv_contrib”发生了以下配置,并且opencv选择了额外的模块。配置结束时进行了make和make install。
xfeatures2d/boostdesc: Download: boostdesc_bgm.i
xfeatures2d/boostdesc: Download: boostdesc_bgm_bi.i
xfeatures2d/boostdesc: Download: boostdesc_bgm_hd.i
xfeatures2d/boostdesc: Download: boostdesc_binboost_064.i
xfeatures2d/boostdesc: Download: boostdesc_binboost_128.i
xfeatures2d/boostdesc: Download: boostdesc_binboost_256.i
xfeatures2d/boostdesc: Download: boostdesc_lbgm.i
xfeatures2d/vgg: Download: vgg_generated_48.i
xfeatures2d/vgg: Download: vgg_generated_64.i
xfeatures2d/vgg: Download: vgg_generated_80.i
xfeatures2d/vgg: Download: vgg_generated_120.i
data: Download: face_landmark_model.dat
..
如何测试opencv中是否包含“ nonfree”模块: 登录到您的虚拟环境,然后键入“ python”,然后键入“ import cv2”(应该返回,没有错误)。然后最后做了“ surf = cv2.xfeatures2d.SURF_create()”,它也没有错误地返回。其中包括在opencv中添加了“非自由”模块。
>$ python
Python 3.5.2 (default, Nov 12 2018, 13:43:14)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> import cv2
>>>
>>> surf=cv2.xfeatures2d.SURF_create()
>>> exit()
谢谢, Muthukumar