opencv基本上是搞CV必備套件之一了,支持的語言也很是多,可是安裝起來有點麻煩(若是是在conda下安裝的話則能夠用conda install -c menpo opencv3=3.2.0)。須要注意的是,pip能夠安裝的opencv-python安裝並不依賴opencv,只是封裝了opencv的Python API,通常狀況下也夠用。可是若是準備安裝完整版本的opencv,這裏比較建議將opencv-python卸載,以避免以後產生一些沒必要要的報錯。
經過官方文檔和一些博客總結的安裝流程大體以下:html
$ 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 liblapacke-dev $ sudo apt-get install libxvidcore-dev libx264-dev # 處理視頻所需的包 $ sudo apt-get install libatlas-base-dev gfortran # 優化opencv功能 $ sudo apt-get install ffmpeg
** 注:**其餘一些包在以後的cmake的時候缺失的時候會進行安裝,若是安裝失敗能夠手動下載相應的包而後放入提示的目錄下。而cmake下載tar.gz文件的時候可能不支持,須要進行配置,具體操做能夠參考這裏。python
這裏須要下載opencv和opencv_contrib(後者會在cmake配置的時候用到),這是由於opencv3之後SIFT和SURF之類的屬性被移到了contrib中,。linux
$ wget https://github.com/opencv/opencv/archive/3.2.0.zip # 從github上直接下載或者clone也可 $ wget https://github.com/opencv/opencv_contrib/archive/3.2.0.zip
將上述opencv包解壓,而後cmake配置屬性git
$ cd opencv-3.2.0 $ mkdir build $ cd build $ cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/home/fanzong/anaconda2/envs/tensorflow \ -D INSTALL_PYTHON_EXAMPLES=ON \ -D INSTALL_C_EXAMPLES=OFF \ -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.2.0/modules \ -D PYTHON_EXCUTABLE=/home/fanzong/anaconda2/envs/tensorflow/bin/python \ -D WITH_TBB=ON \ -D WITH_V4L=ON \ -D WITH_QT=ON \ # 1 -D WITH_GTK=ON \ -D WITH_OPENGL=ON \ -D BUILD_EXAMPLES=ON .. # cmake命令的使用方式:cmake [<some optional parameters>] <path to the OpenCV source directory>。若是命令報錯的話能夠試着把-D後面的空格去掉在執行一次。 $ make -j4 $ sudo make install $ sudo /bin/bash -c 'echo "/home/fanzong/anaconda2/envs/tensorflow/lib" > /etc/ld.so.conf.d/opencv.conf' $ sudo ldconfig
PS:1. 若是qt未安裝能夠刪去此行;若由於未正確安裝qt致使的Qt5Gui報錯,可將build內文件所有刪除後從新cmake,具體能夠參考這裏
CMAKE_INSTALL_PREFIX:安裝的python目錄前綴,其實就是指定了python模塊的安裝路徑:CMAKE_INSTALL_PREFIX/lib/python2.7/dist-packages。獲取該路徑的方式能夠用python -c "import sys; print sys.prefix"
PYTHON_EXCUTABLE:指定python路徑
OPENCV_EXTRA_MODULES_PATH: 指定opencv所需模塊的路徑,就是以前咱們所說的contrib
其餘cmake的具體變量說明能夠看這裏github
opencv最麻煩的地方就是編譯是屬性的配置,對於不一樣的需求要配置不一樣的屬性。當使用NVIDIA GPU GeForce 1080ti的時候:shell
$ cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D INSTALL_PYTHON_EXAMPLES=ON \ -D INSTALL_C_EXAMPLES=OFF \ -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.2.0/modules \ -D PYTHON_EXCUTABLE=/usr/bin/python \ -D WITH_CUDA=ON \ # 使用CUDA -D WITH_CUBLAS=ON \ -D DCUDA_NVCC_FLAGS="-D_FORCE_INLINES" \ -D CUDA_ARCH_BIN="5.3" \ # 這個須要去官網確認使用的GPU所對應的版本[查看這裏](https://developer.nvidia.com/cuda-gpus) -D CUDA_ARCH_PTX="" \ -D CUDA_FAST_MATH=ON \ # 計算速度更快可是相對不精確 -D WITH_TBB=ON \ -D WITH_V4L=ON \ -D WITH_QT=ON \ # 若是qt未安裝能夠刪去此行;若由於未正確安裝qt致使的Qt5Gui報錯,可將build內文件所有刪除後從新cmake,具體能夠參考[這裏](http://stackoverflow.com/questions/17420739/opencv-2-4-5-and-qt5-error-s) -D WITH_GTK=ON \ -D WITH_OPENGL=ON \ -D BUILD_EXAMPLES=ON ..
目前官方提供的opencv4tegra是2.4版本的,尚不支持3.2版本,因此須要本身編譯。ubuntu
$ cmake -D WITH_CUDA=ON \ -D CUDA_ARCH_BIN="6.2" \ # 安裝了6.2版本 -D CUDA_ARCH_PTX="" \ -D WITH_OPENGL=ON \ -D WITH_LIBV4L=ON \ -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local ..
PS:不須要安裝contrib包,不然以後調用攝像頭調整分辨率的時候會失敗。具體安裝細節能夠參考這裏
編譯成功時應該看到這些:bash
-- Other third-party libraries: -- Use Cuda: YES (ver 8.0) -- NVIDIA CUDA -- Use CUFFT: YES -- Use CUBLAS: NO -- USE NVCUVID: NO -- NVIDIA GPU arch: 53 -- NVIDIA PTX archs: -- Use fast math: NO
-- GUI: -- GTK+ 2.x: YES (ver 2.24.30) -- OpenGL support: YES (/usr/lib/aarch64-linux-gnu/libGLU.so /usr/lib/aarch64-linux-gnu/libGL.so)
-- Video I/O: -- DC1394 2.x: YES (ver 2.2.0) -- FFMPEG: YES -- codec: YES (ver 54.92.100) -- format: YES (ver 54.63.104) -- util: YES (ver 52.18.100) -- swscale: YES (ver 2.2.100) -- gentoo-style: YES -- GStreamer: -- base: NO -- video: NO -- app: NO -- riff: NO -- pbutils: NO -- V4L/V4L2: Using libv4l (ver 1.0.0)
注:GPU版本安裝的時候很容易出錯,這裏說的出錯並非編譯報錯,而是在python中調用的時候報錯,好比cv2.VideoCapture(0)返回false,cv2.imshow()的時候報unspecified error。在調用cv2的時候報錯通常都是在cmake配置編譯的時候因爲配置錯誤致使的,因此須要確認配置的參數是否可以覆蓋到你所需的範圍。
關於GPU版本的安裝也能夠參考下這裏,寫得更加詳細清楚。app
安裝完成之後,重啓下機器。編譯以後應該會在CMAKE_INSTALL_PREFIX/lib/python2.7/dist-packages/目錄下找到cv2.so。打開python console,檢測opencv版本python -c "import cv2; print cv2.__version__"
。若是正確安裝的話則會輸出3.2.0。
PS:若是import的時候報相似於error while loading shared libraries: libopencv_core.so.3.0: cannot open shared object file: No such file or directory.
的錯誤,多是library環境變量的錯誤,能夠嘗試將export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
加入到~/.bashrc
中而後source。python2.7
https://www.learnopencv.com/install-opencv3-on-ubuntu/
http://www.pyimagesearch.com/2016/10/24/ubuntu-16-04-how-to-install-opencv/
http://docs.opencv.org/2.4/doc/tutorials/introduction/linux_install/linux_install.html
http://stackoverflow.com/questions/31040746/cant-open-video-using-opencv
http://dev.t7.ai/jetson/opencv/
https://developer.nvidia.com/cuda-gpus
http://stackoverflow.com/questions/41818870/python-opencv-imshow-error
http://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_setup/py_setup_in_fedora/py_setup_in_fedora.html
http://answers.opencv.org/question/27114/error-while-loading-shared-libraries-libopencv_coreso30/