1. 程式人生 > >ubuntu16.04 下安裝加入opencv_contribute包的GPU版本的OpenCV3.2(CUDA支援)步驟與問題解決

ubuntu16.04 下安裝加入opencv_contribute包的GPU版本的OpenCV3.2(CUDA支援)步驟與問題解決

首先肯定是先安裝依賴了,官方列出了一些:

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 –assume-yes libopencv-dev libdc1394-22 libdc1394-22-dev libjpeg-dev libpng12-dev libtiff5-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libxine2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev libtbb-dev libqt4-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils unzip

sudo apt-get install ffmpeg libopencv-dev libgtk-3-dev python-numpy python3-numpy libdc1394-22 libdc1394-22-dev libjpeg-dev libpng12-dev libtiff5-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libxine2-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libv4l-dev libtbb-dev qtbase5-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev

反正不管了,全部都裝上去。 

下載opencv和opencv_contrib(後者會在cmake配置的時候用到),這是因為opencv3以後SIFT和SURF之類的屬性被移到了contrib中,。

$ wget https://github.com/opencv/opencv/archive/3.1.0.zip # 從github上直接下載或者clone也可
$ wget https://github.com/opencv/opencv_contrib/archive/3.1.0.zip

配置編譯opencv (NVIDIA CUDA版本)

opencv最麻煩的地方就是編譯是屬性的配置,對於不同的需求要配置不同的屬性。

cd opencv-3.2.0
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D INSTALL_C_EXAMPLES=OFF -D OPENCV_EXTRA_MODULES_PATH=~/WYZ/download/opencv_contrib-3.1.0/modules -D BUILD_EXAMPLES=ON -D WITH_TBB=ON -D WITH_V4L=ON -D WITH_QT=ON -D WITH_GTK=ON -D WITH_OPENGL=ON -D ENABLE_FAST_MATH=1 -D CUDA_FAST_MATH=1 -D WITH_CUBLAS=1 -D BUILD_TIFF=ON ..

在cmake列印的資訊中確認下CUDA和CUDALS的狀態是否是YES:

  1. --     Use Cuda:                    YES (ver 8.0)  
  2. --     Use OpenCL:                  YES  
  3. --   
  4. --   NVIDIA CUDA  
  5. --     Use CUFFT:                   YES  
  6. --     Use CUBLAS:                  YES  
  7. --     USE NVCUVID:                 NO  
  8. --     NVIDIA GPU arch:             11 12 13 20 21 30 35  
  9. --     NVIDIA PTX archs:            30  
  10. --     Use fast math:               YES  

確認無誤後就可以安裝了

  1. make    
  2. sudo make install   
make的時候遇到了很多問題,比如
linux/videodev.h : no such file or directory
解決方法是
sudo yum install libv4l-devel
sudo ln -s /usr/include/libv4l1-videodev.h   /usr/include/linux/videodev.h 

後來又出現瞭如下問題
Error “sys/videoio.h - not found” OpenCV 3.1.0
查了很多資料,都沒解決,並且一鍵安裝了opencv所有需要的依賴,不過這條命令雖然省事,但是會下來一些當前版本不需要的依賴,耗費比較大的空間和流量,但是也是病急亂投醫吧

sudo apt-get build-dep opencv
安裝完之後還是不行,後來查了很多資料,有一個說核心版本,gcc版本不夠,忽然意識到之前為了裝CUDA,把gcc降級到4.9了 於是需要升級gcc,改用16.04預設的gcc5.4。輸入命令,檢視當前gcc版本
gcc -v
由於新安裝的gcc會覆蓋掉預設的,所以只能找到新安裝的cuda版本 步驟是
sudo apt-get autoremove gcc-4.9 //解除安裝cc-4.9
此時執行
gcc -v
會沒有gcc版本顯示,必須將gcc-5.4重新設為預設gcc
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5.4 40
設定gcc-5.4為可選用的gcc(當前只有一個,所以就是預設的),優先順序為40 此時會蹦出來一個警告,關於已經解除安裝的gcc-4.9,不用理會
這樣就完成了升級,此時再重新cmake,再make就能順利完成了!

上面的過程基本上完成了opencv的安裝。但是並不能夠馬上用它,opencv還包含很多動態連結庫。你可以在檔案/etc/ld.so.conf中新增 /usr/local/lib(這個跟安裝目錄有關, {CMAKE_INSTALL_PREFIX}/lib),也可以在/etc/ld.so.conf.d 目錄下增加一個conf檔案(可以命名為 opencv.conf),同樣新增/usr/local/lib


           使用下面的動態庫管理命令ldconfig,讓opencv的相關連結庫被系統共享

  1. sudo ldconfig -v  

      5.  完成了動態庫的共享,還不能使用opencv來程式設計,還需要為程式指定openvc的標頭檔案位置。這裡使用pkg-config命令來完成。首先在 /etc/profile 中新增
  1. export  PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig  

           pkg-config 維護著一個關於opencv的配置檔案,這個檔案(opencv.pc)在目錄 /usr/local/lib/pkgconfig,這個檔案記錄著opencv的一些動態庫資訊,還有標頭檔案資訊


通過pkg-config 命令可以列出關於opencv的配置資訊:


之後如果需要編譯依賴opencv的程式碼

第一種方法:Command Line(使用命令列引數的方法)

gcc Test.c -o Test `pkg-config --cflags --libs opencv`
./Test baboon.jpg

  在這裡我稍微解釋下這條命令的作用吧。

  在上面的編譯命令中我們其實用到了一個工具“pkg-config”,它主要有以下幾個功能:

  1. 檢查庫的版本號。如果所需要的庫的版本不滿足要求,它會打印出錯誤資訊,避免連結錯誤版本的庫檔案。
  2. 獲得編譯預處理引數,如巨集定義,標頭檔案的位置。
  3. 獲得連結引數,如庫及依賴的其它庫的位置,檔名及其它一些連線引數。
  4. 自動加入所依賴的其它庫的設定

  所有有了這個工具之後我們的編譯就很方便了(不過在此之前你要確保你安裝的OpenCV的安裝連結庫檔案的目錄下有一個pkgconfig資料夾,在該資料夾裡面有個opencv.pc的檔案,其實這就是pkg-config下OpenCV的配置檔案)。

  使用pkg-config時,選項--cflags 它是用來指定程式在編譯時所需要標頭檔案所在的目錄,選項 --libs則是指定程式在連結時所需要的動態連結庫的目錄。例如我下面這張圖就顯示了我電腦上OpenCV的相關目錄。

  

  第二種方法:使用OpenCV推薦的CMake工具

  這個方法,我鬱悶了很久,試了各種辦法,最終還是編譯執行成功啦。一把心酸淚啊。

   下面我就一步步介紹下步驟吧:

  step1:新建一個目錄用於存放我們的程式碼和程式中要處理的相關圖片

  

  step2:新增cmake工具編譯時所需的檔案CMakeLists.txt

  

  CMakeLists.txt檔案中的具體內容如下(注:這個檔案你可以到你的OpenCV原始碼解壓出來的資料夾下的/samples/c/example_cmake/資料夾下拷過來,然後再做修改)。

  下面我就簡要的介紹下這裡面內容的大概意思吧

複製程式碼
  1. PROJECT(OpenCV_Example)           //這是建立一個工程專案(類似於我們VS中建立C++專案一樣),括號裡面時工程名,工程名我們可以任意給,最後程式編譯出來的可執行檔案就是這個名字  
  2. CMAKE_MINIMUM_REQUIRED(VERSION 2.6)    //這是對CMake工具最低版本要求,這裡我們要檢查下我們的CMake工具的版本資訊,我們可以使用命令“cmake --version”檢視  
  3. if(COMMAND cmake_policy)              
  4.       cmake_policy(SET CMP0003 NEW)  
  5. endif(COMMAND cmake_policy)  
  6. FIND_PACKAGE( OpenCV REQUIRED )   //這是cmake用來查詢opencv包用的,不用改  
  7. # Declare the target (an executable)  
  8. ADD_EXECUTABLE(OpenCV_Example  Image_show.c)      //這裡括號裡面的兩個引數分別是工程專案名和我們要編譯檔名的意思,記住中間一空格鍵隔開  
  9. TARGET_LINK_LIBRARIES(OpenCV_Example ${OpenCV_LIBS})  //這是我們連結到OpenCV庫的環節,我們只要更改前面第一個引數位我們的工程專案名即可  
  10. #MESSAGE(STATUS "OpenCV_LIBS: ${OpenCV_LIBS}")     //好了,就修改這麼點東西,儲存,關閉。  
複製程式碼

  然後我們就將終端的工作目錄切換到我們建立工程檔案的這個目錄

  (注意,千萬要注意:你這時一定要檢視你安裝OpenCV時建立的那個編譯檔案,有沒有帶鎖的標誌(即你編譯OpenCV是用root許可權編譯的),就這點就把我坑慘了,例如的我電腦上顯示的就是這樣的

  看到上面圖片中的build資料夾沒,那就是我編譯OpenCV原始碼時建立的資料夾。)

  所以,如果你是以root的許可權編譯的OpenCV此時你就要以切換到root使用者,再切換到當前的工作目錄。如果不是用root許可權編譯的OpenCV編譯的話,你就直接切換目錄就OK了。

  我的電腦是要切換到root狀態的

  

  Step3:讓後我們輸入命令"cmake ."對當前的工程進行編譯。啊哦,這時你就會發現你編譯時出現了一個Bug

  

  這個警告的大概意思就是:Cmake找不到OpenCV的連結庫檔案,你需要手動地設定OpenCV_DIR來指向包含庫檔案的路徑。

  好吧,這是最蛋疼的地方,就這個問題我google和上StackOverFlow都沒有找到答案,只能自己嘗試了,不過還是找到網友給的一些提示。

  其實通過它給我們的提示我們就是要設定好這個路徑。接下來我們通過camke的qt介面進行設定吧。

  Step4:設定OpenCV_DIR

  (1)先安裝cmake的qt介面 "sudo apt-get install cmake-gui"

  (2)開啟cmake-gui介面

    

  (3)我們這是就在Where is the source code 和 where to build binaries 的選項裡選擇我們的目錄剛才建立包含我們程式的檔案路徑吧。

    

  (4)我們選擇cmake介面中的“Add Entry”選項,按照我下面圖中的方式輸入資訊吧,其中alue值就是我OpenCV安裝的那個目錄(回想下我上面說的)。

    

    這樣我們就點選ok吧,得到下面的圖了

    

    到此OpenCV_DIR就配置完成了,單擊下面的Configure和Generate,如果沒報錯則一切搞定啦。我們可以愉快的回到終端編譯我們的程式啦。

  (5)編譯的方式如圖所示

   

   看到了嗎,綠色OpenCV_Example就是我們剛生成的可執行檔案,到此大功告成啊。

   Step5:執行測試吧

  



相關推薦

ubuntu16.04 安裝加入opencv_contributeGPU版本OpenCV3.2CUDA支援步驟問題解決

首先肯定是先安裝依賴了,官方列出了一些: sudo apt-get install build-essential sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev liba

Ubuntu16.04安裝配置了tensorflow GPU版本後導致的常見錯誤

      作為菜鳥的我花費了一天的時間終於將TensorFlow GPU版本安裝配置好了,配置網址為:http://www.linuxidc.com/Linux/2016-11/137561.htm

Ubuntu16.04安裝Python擴充套件-scipy,numpy,matplotlib普通環境和virtualenv虛擬環境

1、普通環境安裝擴充套件 sudo apt-get install python-scipy sudo apt-get install python-numpy sudo apt-get install python-matplotlib 2、在Python虛擬環境中安

Ubuntu18.04安裝配置Caffe-SSD-GPU版本並MNIST模型測試和matlab caffe介面測試

Ubuntu18.04->sogou->顯示卡驅動->matlab2018a->cuda9.0->cudnn5.01->opencv3.4.1->caffe opencv 和caffe 比較難裝。其中opencv最為慢,主要make 一次太久。

Ubuntu18.04安裝配置Caffe-SSD-GPU版本

系統版本:Ubuntu18.04 系統環境:OpenCV3.4.1,Python2 1. 安裝依賴項 sudo apt-get install libprotobuf-dev liblevel

Ubuntu14.04安裝AMD閉源顯示卡驅動fglrx開發專用

我的電腦是AMD的R9 200系列顯示卡。 安裝完Ubuntu系統之後,進入system setting可以看到當前使用的是開源驅動。 接下來我把我整理出來的目前可行的安裝方法分享給大家。 (額外補充一點,在你安裝完Ubuntu系統之後,建議馬上在設定中將映象伺服器,也就是

Ubuntu16.04安裝Chrome出現“未安裝軟件 libappindicator1”問題的解決辦法

googl spa 軟件包 依賴 mic 安裝軟件 ren for 其中 1. 強制安裝chrome sudo dpkg -i google-chrome-stable_current_i386.deb --force 2. 補齊依賴 sudo apt-get i

ubuntu16.04安裝如何安裝.deb安裝

在Ubuntu下安裝deb包需要使用dpkg命令. Dpkg 的普通用法: 1、sudo dpkg -i <package.deb> 安裝一個 Debian 軟體包,如你手動下載的檔案。 2、sudo dpkg -c <package.deb> 列

Ubuntu16.04安裝Caffe(GPU)

說明: 我這裡主要是參考第一篇和第二篇的詳細講解過程,下面我就是對自己遇到的問題作出一些解決: 這是在最後的編譯階段出現的問題,(一)嘗試了在本地新增libcudart.so.8.0的路徑,更新路徑後,我又輸入命令sudo make runtest -j8結果

ubuntu16.04安裝CUDA,cuDNN及tensorflow-gpu版本過程

這篇文章主要依據兩篇文章: 深度學習主機環境配置: Ubuntu16.04+Nvidia GTX 1080+CUDA8.0 深度學習主機環境配置: Ubuntu16.04+GeForce GTX 1080+TensorFlow 不過在實際執行的過程中,

ubuntu16.04安裝TensorFlow(GPU加速)----詳細圖文教程

寫在前面 一些廢話 接觸深度學習已經有一段時間,之前一直在windows下使用Theano,但是發現Theano天書般的原始碼真是頭大,在看到tensorflow中文教程後,發現它竟然邏輯清晰,教程豐富,實在是居家旅行必備良藥啊![偷笑][偷笑][偷笑]

ubuntu16.04安裝CUDA,cuDNN及tensorflow-gpu

原博文:這篇文章主要依據兩篇文章: 深度學習主機環境配置: Ubuntu16.04+Nvidia GTX 1080+CUDA8.0 深度學習主機環境配置: Ubuntu16.04+GeForce GTX 1080+TensorFlow 不過在實際執行的過程中,有一定的不同之處

ubuntu16.04安裝TensorFlow(GPU加速)

配置 硬體:Thunderbot 911筆記本,CPU:i7,GPU :GeForce GTX 960m, 8G記憶體,120G SSD+1T 機械硬碟。  軟體: ubuntu16.04+cuda8.0+cudnn v5+tensorflow 0.11 1. 下載

Ubuntu16.04使用lnmp軟體搭建開發環境安裝擴充套件pdo_pgsql擴充套件報錯Can't find the 'libpq-fe.h header

1.安裝pgsql擴充套件[email protected]:~/lnmp1.4/src/php-7.1.15/ext/pgsql$ phpize Configuring for: PHP Api Version: 20160303 Zend Mo

ubuntu16.04 安裝phpMyAdmin

image ubuntu16 log 一個 workbench 過程 cnblogs share enc 由於 ubuntu上沒有什麽好的數據庫界面,當然 說mysql_workbench 的大神不要見笑, 本人英語水平有限,雖然用起來沒有什麽影響,但是就是感覺不舒服 於是

Ubuntu16.04安裝elasticsearch+kibana實現php客戶端的中文分詞

lba 實例 exc common adding creat 啟動服務 uid dbms 1.下載安裝elasticsearch和kibana wget https://artifacts.elastic.co/downloads/elasticsearch/elasti

ubuntu16.04安裝emacs

輸入 mac aps pda posit ins pos snap ubunt 1.直接在軟件中心下載. 2.終端下載: 依次輸入這三條命令即可 sudo add-apt-repository ppa:ubuntu-elisp/ppasudo apt-get updates

Ubuntu16.04安裝redis並實現helloworld

ber -a lang 配置 ges image download rep mon 原文出處:http://blog.csdn.net/xiangwanpeng 1 sudo wget http://download.redis.io/releases/redis-3.2.

Ubuntu16.04安裝tensorflowAnaconda3+pycharm+tensorflow+CPU

arc apt 沒有 3.4 charm tps repo 1.2 net 1.下載並安裝Anaconda 1.1 下載 從Anaconda官網(https://www.continuum.io/downloads)上下載Linux版本 https://repo.conti

Ubuntu16.04安裝jdk1.8過程

ubunt 地址 ins 退出 .com 安裝jdk AD size class 筆者環境:騰訊雲服務器 Ubuntu16.04 x64 一 . 去oracle官網下載對應的jdk 下載地址:http://www.oracle.com/technetwork/java/