1. 程式人生 > >fatal error: opencv2/contrib/contrib.hpp' file not found

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

(opencv3已經支援)

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

(預設為/usr/local,可根據自己喜好設定路徑,但要記住放在那裡的)
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就可以跑起了