Ubuntu16.04卸載其他版本的opencv並安裝opencv3.2.0+opencv contrib3.2.0

一、卸載已安裝的opencv

1、查看已安裝的opencv版本

$  pkg-config --modversion opencv

2、卸載

     首先要找到當初安裝opencv的build目錄,進入該build目錄執行卸載操作

$  sudo make uninstall
$  cd  ..
$  rm -r build

    如果找不見該build目錄,可以重新建立build目錄安裝對應版本,然後再執行上邊卸載步驟。然後清理/usr中所有opencv相關項

$  rm -r /usr/local/include/opencv2 /usr/local/include/opencv /usr/include/opencv /usr/include/opencv2 /usr/local/share/opencv /usr/local/share/OpenCV /usr/share/opencv /usr/share/OpenCV /usr/local/bin/opencv* /usr/local/lib/libopencv*
$  cd /usr
$  find . -name "*opencv*" | xargs sudo rm -rf

    移除python相關

$  apt-get remove-doc opencv-data python-opencv

    如果找不見當時的安裝目錄,可能被刪除了,就需要重新安裝一遍,安裝之後就可以進行uninstall操作了!

二、安裝opencv3.2.0 + opencv contrib3.2.0

1、下載opencv3.2.0 以及 opencv contrib3.2.0

      opencv 3.2.0下載鏈接:

           鏈接1:Download1Download2

           鏈接2:Download

      opencv_contrib 3.2.0 下載鏈接

           鏈接:Download

 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


3、在住文件目錄中創建opencv目錄,將opencv3.2.0解壓到該目錄中,再將opencv contrib3.2.0解壓到opencv3.2.0目錄中。

 並且在主目錄中創建build文件。

 

$  cd ~
$  mkdir opencv
   將opencv3.2.0以及opencv contrib3.2.0解壓到該目錄下,可以在終端輸入命令解壓,也可以直接對壓縮文件右鍵提取操作。

$  cd ~/opencv/opencv-3.2.0/
$  mkdir build

 4、進入build目錄並cmake:

第一步:
$  cd ~/opencv/opencv-3.2.0/build

第二步:
$  cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=~/opencv/opencv-3.2.0/opencv_contrib-3.2.0/modules/ ..

上邊位安裝opencv_contrib模塊,下邊位不安裝
$  cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..

  其中CMAKE_INSTALL_PREFIX=/use/local爲安裝的路徑,OPENCV_EXTRA_MODULES_PATH=~/opencv/opencv-3.2.0/opencv_contrib-3.2.0/modules爲opencv_contrib-3.2.0的目錄,並且最後兩個點不能拉掉!

 

   cmake過程中可能遇到的問題:

 1、如果網絡不好,出現ippicv_linux_20151201.tgz無法在終端下載的情況,則可以先單獨下載
    ippicv_linux_20151201.tgz之後,把其移動到終端所提示的路徑(終端會提示該路徑找不到文
    件),如路徑/opencv-3.2.0/3rdparty/ippicv/downloads/linux-
    808b791a6eac9ed78d32a7666804320e/

    移動的時候,可以另外打開一個終端操作:
    sudo mv ippicv_linux_20151201.tgz /opencv-3.2.0/3rdparty/ippicv/downloads
    /linux-808b791a6eac9ed78d32a7666804320e

    如果同樣有其他類似的文件無法下載,方法同上。
 2、如果出現如下的報錯情況,請參考這篇文章解決 http://blog.csdn.net/tengxing007/article/details/54380732
    

Checking for module 'gtk+-3.0'
 --   No package 'gtk+-3.0' found
 -- Checking for module 'gstreamer-base-1.0'
 --   No package 'gstreamer-base-1.0' found

 checking for module 'gstreamer-base-1.0'
 --   package 'gstreamer-base-1.0' not found
 -- checking for module 'gstreamer-video-1.0'
--   package 'gstreamer-video-1.0' not found
 -- checking for module 'gstreamer-app-1.0'
 --   package 'gstreamer-app-1.0' not found
 -- checking for module 'gstreamer-riff-1.0'
 --   package 'gstreamer-riff-1.0' not found
 -- checking for module 'gstreamer-pbutils-1.0'
 
5、make與install

在原先的build目錄下執行一下兩步操作:

$  sudo make
$  sudo make install


6'、配置環境

在終端中打開 /etc/ld.conf.d/opencv.conf 文件,並在最後一行添加 /usr/local/lib,如果沒有這個文件那就新建一個。然後打開 /etc/bash.bashrc 文件,在最後一行中添加

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/opencv320/lib/pkgconfig
export PKG_CONFIG_PATH


$  sudo gedit /etc/ld.so.conf.d/opencv.conf

#在最後一行中添加 /usr/local/lib

$  sudo geidt /etc/bash.bashrc

#在最後一行中添加:

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/opencv320/lib/pkgconfig
export PKG_CONFIG_PATH

$  sudo ldconfig 

    在make的時候可能出現的錯誤: error: ‘GstMiniObjectClass’ does not name a type類似的錯誤時

明顯地,與gstreamer-0.10有關,於是重裝libgstreamer0.10-dev 、以及libgstreamer-plugins-base0.10-dev,沒用。於是下載舊版本的opencv嘗試編譯,但是經過3.0.0-beta以及2.4.10都不行後,只有opencv-2.4.9編譯是正常的。於是嘗試對比2.4.9以及3.0.0-rc1的不同。看到CMakeList有如下信息:


3.0.0-rc1的是:

[html] view plain copy

    OCV_OPTION(WITH_FFMPEG         "Include FFMPEG support"                      ON   IF (NOT ANDROID AND NOT IOS AND NOT WINRT) )  
    OCV_OPTION(WITH_GSTREAMER      "Include Gstreamer support"                   ON   IF (UNIX AND NOT ANDROID) )  
    OCV_OPTION(WITH_GSTREAMER_0_10 "Enable Gstreamer 0.10 support (instead of 1.x)"                              OFF )  
    OCV_OPTION(WITH_GTK            "Include GTK support"                         ON   IF (UNIX AND NOT APPLE AND NOT ANDROID) )  

2.4.9的是:

[html] view plain copy

    OCV_OPTION(WITH_FFMPEG         "Include FFMPEG support"                      ON   IF (NOT ANDROID AND NOT IOS))  
    OCV_OPTION(WITH_GSTREAMER      "Include Gstreamer support"                   ON   IF (UNIX AND NOT APPLE AND NOT ANDROID) )  
    OCV_OPTION(WITH_GTK            "Include GTK support"                         ON   IF (UNIX AND NOT APPLE AND NOT ANDROID) )  


也就是2.4.9還默認使用電腦中所使用的gstreamer版本,而3.0.0已經默認使用最新的gstreamer1.0了(今天是2015.5.5,最新gstreamer爲1.0)。

到此,可以發現有兩個解決方法:

1,在cmake時:設置WITH_GSTREAMER_0_10=OFF

2,安裝最新gstreamer1.0

因此我決定安裝gstreamer1.0。即:
[html] view plain copy

    sudo apt-get install libgstreamer1.0-dev  libgstreamer-plugins-base1.0-dev   


如果沒有出現錯誤則安裝成功,可以運行$ pkg-config --modversion opencv 檢查是不是3.2.0版本!

若運行$ pkg-config --modversion opencv後 提示:


Package opencv was not found in the pkg-config search path.
Perhaps you should add the directory containing `opencv.pc'
to the PKG_CONFIG_PATH environment variable
No package 'opencv' found
則需要運行下邊語句

sudo cp /usr/local/opencv320/lib/pkgconfig/opencv.pc /usr/lib/pkgconfig



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