fatal error: opencv2/contrib/contrib.hpp' file not found
問題分析
1 問題
在建立好基於opencv3的深度學習Caffe環境後,執行一些特殊的基於opencv2的caffe_demo編譯時出現:
fatal error: opencv2/contrib/contrib.hpp: 沒有那個檔案或目錄
如下圖
2 分析
首先不要懷疑opencv3安裝出了問題,個人找了些部落格,得出結論:
opencv3中已經沒有了contrib這個模組,特別指出不是編譯opencv_contrib的問題,而是opencv_contrib中也沒有contrib模組
所以再怎麼重灌opencv3+opencv_contrib也是無效的
問題解決
3 解決方案
如果是在python中呼叫contrib模組,大可直接:
sudo pip install opencv-contrib-python
但我們這裡是C/C++,所以我的辦法是再安裝一個opencv2版本
4 opencv2安裝注意事項
這裡值得一提的是,我的Ubuntu環境為了滿足大多demo需求,已經安裝了opencv3.4.0版本,安裝opencv2只是滿足個別demo,所以再安裝opencv2時要注意下面幾點:
1)安裝的系統路徑不能再是:/usr/local (opencv3已經佔用,不能衝突)
2)建議不要再安裝opencv_python
5 opencv2安裝
本中選擇opencv2.4.10,在自己放安裝包的目錄下
mkdir opencv24
cd opencv24
wget https://github.com/opencv/opencv/archive/2.4.10.zip
unzip 2.4.10.zip
cd opencv-2.4.10
mkdir build
cd build
cmake-gui
Generate步驟和opencv3安裝一樣
然後,注意
1)去掉BUIILD_opencv_python
2)去掉WITH_CUDA (有它編譯出錯,可根據自己情況決定)
3)更改CMAKE_INSTALL_PREFIX的Value值:/usr/local/opencv2410
4)再次Generate,若無錯,再Configure,關閉cmake-gui
5)編譯
make all -j16
sudo make install
6)ok
7)檢視 (該目錄就有contrib模組了)
ll /usr/local/opencv2410/include/opencv2/
應用
6 caffe呼叫
1)cmake方式
在CMakeLists.txt中,project(Caffe C CXX)之前加上:
set(OpenCV_DIR “/usr/local/opencv2410/share/OpenCV”)
注意這裡的引號,結果如圖紅色字型才對
即可,再次編譯
本人親測有效
2)make方式
目前在連線opencv庫還有點問題,待測試成功再更新,當然只要一種方式能成功,caffe就可以跑起了