如何使用nonfree模块安装OpenCV 3.0?

时间:2016-01-14 04:11:28

标签: opencv

我已经尝试了几次,但大多数指南只告诉你如何在你构建OpenCV之后安装它。我有两次不成功的尝试这样做,这样做是很多工作,所以

  1. 我很感激(以及其他人以后读书可能会欣赏)关于如何安装它的基本说明(假设依赖已经存在)。
  2. 最好是使用git还是自己构建它?
  3. 必须运行哪些指令?
  4. 建立一个旧版本(比如2.4.9)是不是更好,因为到目前为止版本3是不可靠的?

2 个答案:

答案 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