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。