ubuntu16.04源碼編譯安裝opencv4.0.0(四)

博主嘗試了一次在ubuntu16.04上的anaconda環境下編譯opencv4.0.0,編譯的過程比以前編譯opencv3.4.2時出奇的順利,分享給同學們。
注意事項:ubuntu16.04+anaconda+opencv-4.0.0+opencv_contrib-4.0.0
1.首先是安裝Opencv依賴項

  sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev liblapacke-dev libxvidcore-dev libx264-dev 

2.git下來需要的opencv源碼
到https://github.com/opencv/opencv和https://github.com/opencv/opencv_contrib
選擇下在4.0.0版本的opencv和opencv_contrib在這裏插入圖片描述
然後直接解壓到根目錄中
3.安裝anaconda,直接下載安裝
4.進入到opencv根目錄下

mkdir bulid && cd bulid 

5.source進入conda環境下

source activate tf36

6.重點來了,這一步也是非常關鍵的一步,參考了很多都有問題不可行

cmake -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_V4L=ON -D WITH_OPENGL=ON -D WITH_VTK=ON .. -D CMAKE_BUILD_TYPE=RELEASE -D OPENCV_EXTRA_MODULES_PATH=/home/fengzicai/Downloads/opencv_contrib-4.0.0/modules -D WITH_IPP=OFF -D PYTHON_DEFAULT_EXECUTABLE=/home/fengzicai/anaconda3/envs/tf36/lib/python3.6 -D BUILD_opencv_python3=ON -D BUILD_opencv_python2=OFF -D PYTHON3_EXCUTABLE=/home/fengzicai/anaconda3/envs/tf36/lib/python3.6 -D PYTHON3_INCLUDE_DIR=/home/fengzicai/anaconda3/envs/tf36/include/python3.6m -D PYTHON3_LIBRARY=/home/fengzicai/anaconda3/envs/tf36/lib/libpython3.6m.so.1.0 -D PYTHON_NUMPY_PATH=/home/fengzicai/anaconda3/envs/tf36/lib/python3.6/site-packages -D BUILD_EXAMPLES=ON -D BUILD_LIBPROTOBUF_FROM_SOURCES=ON -D BUILD_opencv_hdf=OFF ..

7.上一步確保cmake成功,會出現
configuring down,generating down,building files has been written…
8.編譯安裝opencv

make -j8
sudo make install
sudo ldconfig

9.重點來了
找到" cv2.cpython-36m-x86_64-linux-gnu.so "文件的路徑:

sudo find / -name "cv2.cpython-36m-x86_64-linux-gnu.so"

比如我是

/usr/local/python/cv2/python-3.6/cv2.cpython-36m-x86_64-linux-gnu.so

10.然後將這個文件替換成cv2.so

sudo su
cd  /usr/local/python/cv2/python-3.6/
cp cv2.cpython-36m-x86_64-linux-gnu.so cv2.so

11.之後將該cv2.so文件與anaconda路徑下建立軟鏈接

cd /home/fengzicai/anaconda3/envs/tf36/lib/python3.6/site-packages
ln -s /usr/local/python/cv2/python-3.6/cv2.cpython-36m-x86_64-linux-gnu.so cv2.so

12.經過一下下的等待,然後結束,鍵入Python,import cv,成功。查看版本

python
import cv2
cv2.__version__

13.問題總結:
(1)

[modules/python3/CMakeFiles/opencv_python3.dir/__/src2/cv2.cpp.o] Error 1
CMakeFiles/Makefile2:20921: recipe for target 'modules/python3/CMakeFiles/opencv_python3.dir/all' failed
make[1]: *** [modules/python3/CMakeFiles/opencv_python3.dir/all] Error 2
Makefile:162: recipe for target 'all' failed
make: *** 
[all] Error 2

解決方法:
在opencv-4.0.0/文件夾下運行

python ./modules/python/src2/gen2.py ./build/modules/python_bindings_generator

(2)

make[1]: *** [modules/xfeatures2d/CMakeFiles/opencv_xfeatures2d.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....

報錯原因是由於網絡的問題,文件face_landmark_model.dat不能下載!
參考:https://github.com/opencv/opencv/issues/9196
解決方法:單獨從網上下載
contrib_face_alignment下載地址進行face_landmark_model.dat的下載;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章