如何安装带有非免费模块的OpenCV 3.0?

5

我尝试过几次,但大多数指南都只告诉你如何在构建OpenCV之后安装它。我以这种方式尝试了两次,但都没有成功,并且这种方法需要很多工作。

  1. 我希望能提供基本的安装说明(假设依赖项已经存在),其他人以后阅读时也会感激不尽。
  2. 最好使用git还是自己构建?
  3. 必须使用什么指令运行cmake?
  4. 是构建旧版本(例如2.4.9)更好,因为版本3目前不可靠吗?

这里有一个不错的指南,适合任何有兴趣的人:http://www.pyimagesearch.com/2015/06/22/install-opencv-3-0-and-python-2-7-on-ubuntu/ - Chandler Squires
OpenCV 3.1已经发布,修复了许多错误并增加了新功能。 - Miki
2个回答

7

这个问题在opencv论坛上有Berak的回答,如下所述。基本上,您可以从Git中拉取它,在cmake过程中添加它,然后就可以使用了。

Berak的答案:

in 3.0, SIFT and SURF were moved to the opencv_contrib repo

you will need to clone/fork/download that, and add that to your (main opencv) cmake;

cmake -DOPENCV_EXTRA_MODULES_PATH=<opencv_contrib>/modules

then, after building,

#include "opencv2/xfeatures2d/nonfree.hpp"

Ptr<xfeatures2d::SURF> surf = xfeatures2d::SURF::create(); // note
extra namespace surf->detect(...); surf->compute(...);

don't forget to link to opencv_xfeatures2d(.lib)

此外,针对第四个问题的回答,OpenCV 3.0 是可靠的,我不会说它不可靠。

1

终于找到了解决方案: 首先配置了"opencv-3.4"和所需的东西。我发现使用cmake-gui来配置opencv-3.4很容易。在配置期间,通过选择复选框启用了"OPENCV_ENABLE_NONFREE"和其他必需的内容。

编译进行得很顺利,make install也完成了。 但是我无法使用"nonfree" api,例如我的应用程序中使用的"xfeatures2d"。

经过6-7个小时的努力,最终发现我们需要在opencv的配置过程中包含"opencv-contrib"模块。

下载了opencv-contrib-3.4.8并在opencv配置中指定了路径"../opencv-contrib-3.4.8/modules",放在了OPENCV_EXTRA_MODULE_PATH中。

然后使用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()”,也不会返回错误。这表明“nonfree”模块已添加到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。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接