opencv_contrib提供了一些比较新或者说还不够成熟的函数(或者有专利),因为不够稳定所以没有加入到opencv中,但也有人要用到,所以就创建了这个项目。
安装之前要先安装依赖库,在终端输入一下命令:
sudo apt-get install build-essential sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
然后要下载你要的版本的opencv和opencv_contrib.zip文件,注意版本要对应。下载地址:https://github.com/opencv/opencv/tags和https://github.com/opencv/opencv_contrib/tags
然后将两个文件解压,将opencv_contrib移动到opencv目录下,并在opencv文件创建build文件夹。
然后在终端输入:
cd build cmake-DOPENCV_ENABLE_NONFREE:BOOL=ON
-DOPENCV_EXTRA_MOUDLES_PATH=绝对路径/opencv_contrib-3.4.10/modules ..
make -j8
sudo make install
其中 -DOPENCV_ENABLE_NONFREE:BOOL=ON 语句可以生成SURF等有专利的算法的库,有了这些库就可以使用SURF等算法,不加这句进行cmake会出现错误:
This algorithm is patented and is excluded in this configuration; Set OPENCV_ENABLE_NONFREE CMake option and rebuild the library in function 'create'
make操作时会报错,如果只想编译部分文件,或者有的文件编译报错可以使用如下命令,跳过特定文件的编译。
cmake -DOPENCV_EXTRA_MODULES_PATH=绝对路径/opencv_contrib-3.4.10/modules -DBUILD_opencv_legacy=OFF ..
如果没有错误,编译完成后再进行安装,在终端输入:
sudo make install
错误1:boostdesc_bgm.i:没有那个文件或目录
解决方法:下载boostdesc_bgm.i等文件,并将其移动到opencv_contrib_3.4.10/modules/xfeatures2d/src目录下
下载链接:https://pan.baidu.com/s/1DmwL2IG2ZzL4nNhmKkqrIA 提取码:vtld
错误2:opencv2/xfeatures2d/cuda.hpp:没有那个文件或目录
解决方法:将opencv_contrid-3.4.10/modules/xfeatures2d/include/opencv2下的xfeatures2d文件夹和xfeatures2d.hpp拷贝到
opencv-3.4.10/modules/stitching/include/opencv2目录下,和stitching文件夹并列。
错误3:opencv2/xfeatures2d.hpp:没有那个文件或目录
解决方法:将opencv_contrid-3.4.10/modules/xfeatures2d/include/opencv2下的xfeatures2d文件夹和xfeatures2d.hpp拷贝到
opencv-3.4.10/opencv_contrib-3.4.10/modules/sfm/include/opencv2目录下,和sfm文件夹和sfm.hpp并列。
重新make即可,最后不要忘记install。