Ubuntu 16.04編譯安裝OpenCV(Python)
阿新 • • 發佈:2019-01-06
環境: Ubuntu 16.04 64bit ,openCV opencv-3.1.0
1.安裝opencv依賴包
2.下載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 # 處理影象所需的包 $ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev $ sudo apt-get install libxvidcore-dev libx264-dev # 處理視訊所需的包 $ sudo apt-get install libatlas-base-dev gfortran # 優化opencv功能 $ sudo apt-get install ffmpeg
這裡需要下載opencv和opencv_contrib(後者會在cmake配置的時候用到),這是因為opencv3以後SIFT和SURF之類的屬性被移到了contrib中。
$ cd ~
$ wget -O opencv.zip https://github.com/Itseez/opencv/archive/3.1.0.zip
$ unzip opencv.zip
$ wget -O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/3.1.0.zip
$ unzip opencv_contrib.zip
3.安裝opencv3.1.0$ cd opencv3.1.0 $ mkdir build $ cd build $ sudo cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local .. -DOPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.1.0/modules ~/opencv-3.1.0/ WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D ENABLE_FAST_MATH=1 -D WITH_CUDA=ON -D CUDA_FAST_MATH=1 -D WITH_CUBLAS=1 -D CUDA_GENERATION=Auto -D WITH_GSTREAMER_0_10=OFF ..
$ sudo make -j8 (-j4 四核編譯, -j8八核編譯,此處根據自己電腦的CPU配置)
然後
$ sudo make install
===========================================
中途可能出現問題
- 執行
sudo make
時,可能出現make[2]: *** [modules/cudalegacy/CMakeFiles/opencv_cudalegacy.dir/src/graphcuts.cpp.o] Error 1 make[1]: *** [modules/cudalegacy/CMakeFiles/opencv_cudalegacy.dir/all] Error 2 make: *** [all] Error 2
的錯誤。
那是因為cuda-8.0
與OpenCV 3.1.0
發生了衝突。解決方法:修改openCV 3.1.0
原始碼,使其相容cuda-8.0
$ sudo vi opencv-3.1.0/modules/cudalegacy/src/graphcuts.cpp
將第四十五行位置的
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)
改為
#if !defined(HAVE_CUDA)||defined(CUDA_DISABLER)||(CUDART_VERSION>=8000)
然後重新執行
$ sudo make -j4 # -j4為開四個執行緒,加快編譯速度
問題二 fatal error: hdf5.h: No such file or directory opencv_contrib-3.1.0/modules/hdf/include/opencv2/hdf/hdf5.hpp:40:18: fatal error: hdf5.h: No such file or directory
原因:找不到hdf5.h的路徑
解決辦法:在opencv_contrib-3.1.0/modules/hdf/include/opencv2/hdf/hdf5.hpp 檔案中修改第40行
將#include <hdf5.h>
修改成#include "/usr/include/hdf5/serial/hdf5.h"
sudo make clean
。因為執行sudo
make clean
後會重新從頭編譯,然後再執行
sudo make -j8