歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Ubuntu 16.04 編譯安裝OpenCV 3.1及OpenCV多版本切換

Ubuntu 16.04 編譯安裝OpenCV 3.1及OpenCV多版本切換

日期:2017/2/28 13:44:53   编辑:Linux教程

在Ubuntu 16.04下編譯安裝OpenCV 3.1及OpenCV多版本切換的過程。

第一步:更新驅動

Ubuntu 16.04的更新管理器集成了驅動更新,選擇安裝nivdia的驅動

第二步:安裝cuda

sudo apt-get install nvidia-cuda-toolkit

cuda是7.5.18版,安裝完後重啟,在終端輸入nivdia-smi,有結果則驅動和cuda安裝成功。

但是cuda只支持gcc5.0以下,即使後續用cmake編譯opencv成功,gpu還是無法調用

第三步:強制取消cuda的gcc版本檢查

注釋掉host_config.h中關於gcc版本的檢查,版本大於5則返回錯誤

//#if __GNUC__ > 5
//#error -- unsupported GNU version! gcc versions later than 5 are not supported!
//#endif /* __GNUC__ > 5 */

通過nvidia-cuda-toolkit安裝的,host_config.h在 /usr/include/下,如果通過cuda的run文件安裝,也會因為gcc版本檢查提示錯誤,也要修改對應位置的host_config.h

法二:通過修改gcc版本降級

第四部:安裝OpenCV相關的庫

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 libtbb-dev libboost-dev libeigen3-dev

sudo apt-get install libxml2-dev libxslt-dev libffi-dev libsdl1.2-dev libssl-dev libboost-all-dev

第五步:cmake編譯
安裝cmake-gui

ippicv_linux_20151201.tgz 下載到Linux公社1號FTP服務器下載

------------------------------------------分割線------------------------------------------

FTP地址:ftp://ftp1.linuxidc.com

用戶名:ftp1.linuxidc.com

密碼:www.linuxidc.com

在 20177年LinuxIDC.com\1月\Ubuntu 16.04 編譯安裝OpenCV 3.1及OpenCV多版本切換\

下載方法見 http://www.linuxidc.com/Linux/2013-10/91140.htm

------------------------------------------分割線------------------------------------------

相關選項:

  1. 添加opencv-contrib模塊
  2. CUDA_GENERATION模式設定為auto,不是kepler。 我的顯卡 Compute Capability是5.0,kepler默認3.0(3.5),導致編譯之後的opencv調用cuda,出現api不符合,因為CUDA_ARCH_BIN與電腦顯卡不一致,具體請查看,確認CUDA_ARCH_BIN與你顯卡的Compute Capability一致,如果不一致,CUDA_GENERATION請選擇auto或者空白,然後填入顯卡對應的Compute Capability
  3. 添加tbb,ipp最好提前下載(下載見Linux公社1號FTP服務器),解壓放/opencv-3.1.0/3rdparty/ippicv/中,
  4. 勾選CUBLAS,Eigen,ipp,opengl,注意編譯之前確保numpy已經安裝,否則最後不會生成cv2.so
  5. 強烈建議:如果准備opencv2.4.和opencv3.1切換使用,(畢竟opencv3.1實現了很多新論文相關算法,opencv2.4也比較常見),請進行如下設置:
修改cmake_install_prefix,
opencv3.1 安裝目錄/usr/local/opencv3,
opencv2.4 安裝目錄/usr/local/opencv2,
在cmake-gui中可以搜索cmake_install_prefix,修改。
注意如果准備切換opencv版本,一定不要選擇默認路徑,否則,鏈接opencv的時候會因為多版本的lib發生鏈接沖突。
  1. configure以及generate,生成的build下面

    make -j4  //多線程編譯
    sudo make install 

第六步:跳過系統環境變量的設置,設置/etc/profile和~/.bashrc導致同時使用不同版本時發生錯誤,所以跳過;
配置終端的環境變量,不同的終端設置不同的opencv
步驟:
打開終端,需要運行opencv3的,注意/usr/local/opencv3為opencv3.1的安裝目錄

export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/opencv3/lib/pkgconfig
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/opencv3/lib

相應的,需要運行opencv2的,注意/usr/local/opencv2為opencv2.4*的安裝目錄

export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/opencv2/lib/pkgconfig
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/opencv2/lib

pkgcongfig中的有opencv.pc保存有對應opencv的include和lib路徑,但是sudo ldconfig後生效,
可以用下列三個命令驗證

pkg-config --modversion opencv 
pkg-config --cflags opencv 
pkg-config --libs opencv 

優點:
可以不同版本的opencv同時編譯;
缺點:
每個終端下運行opencv 都要設置對應的環境變量,新建終端默認沒有opencv的環境變量需要從重新設置。

第七步:CMakeLists的一點點修改
因為usr/local/opencv3/share/OpenCV/OpenCVConfig.cmake中設置了opencv的配置,自定義路徑安裝opencv時,找不到這個文件OpenCVConfig.cmake,opencv-config.cmake
需要在項目的CMakeList.txt中添加OpenCVConfig.cmake的路徑

set(CMAKE_PREFIX_PATH "/usr/local/opencv3/share/OpenCV")

根據自定義的opencv路徑修改。

error:1 /usr/include/string.h:652:42: error: ‘memcpy’ was not declared in this scope

原因g++版本太新了,兼容一下,在出現上面錯誤時,在CMakeLists.txt中前面幾行添加

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_FORCE_INLINES")

OpenCV官方教程中文版(For Python) PDF http://www.linuxidc.com/Linux/2015-08/121400.htm

Ubuntu 14.04安裝OpenCV2.4.9 http://www.linuxidc.com/Linux/2016-07/132884.htm

Ubuntu 12.04下安裝OpenCV 2.4.5總結 http://www.linuxidc.com/Linux/2013-06/86704.htm

Ubuntu 16.04上用CMake圖形界面交叉編譯樹莓派的OpenCV3.0 http://www.linuxidc.com/Linux/2016-10/135914.htm

Ubuntu 16.04中安裝OpenCV 2.4.11 http://www.linuxidc.com/Linux/2016-07/132882.htm

Ubuntu 16.04下Matlab2014a+Anaconda2+OpenCV3.1+Caffe安裝 http://www.linuxidc.com/Linux/2016-07/132860.htm

[翻譯]Ubuntu 14.04, 13.10 下安裝 OpenCV 2.4.9 http://www.linuxidc.com/Linux/2014-12/110045.htm

Ubuntu 安裝 OpenCV 2.4.9 http://www.linuxidc.com/Linux/2016-12/138293.htm

OpenCV的詳細介紹:請點這裡
OpenCV的下載地址:請點這裡

Copyright © Linux教程網 All Rights Reserved