1. 程式人生 > >在Ubuntu14.04的64位下安裝opencv2.4.13和opencv3.1.0及不同版本間切換的操作

在Ubuntu14.04的64位下安裝opencv2.4.13和opencv3.1.0及不同版本間切換的操作

最近幾天,一直在摸索Ubuntu14.04下安裝opencv2和opencv3及不同版本間切換的方法,嘗試了很多網上介紹的方法,也不是他們介紹的不對,只是介紹的安裝方法都很單一,無法完全滿足自己的當前需求,所以搜尋很多相關的部落格文章,結合自己的安裝經驗,覺得有必要把它寫下來,一方面方便自己以後回過頭來看,同時也為其他人提供方便。
第一步:更新系統軟體源和系統軟體
sudo apt-get update
sudo apt-get upgrade
第二步:安裝依賴庫
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
第三步:下載opencv2和opencv3的原始碼以及opencv3版本需要的相關附加程式碼庫


https://github.com/opencv/opencv/releases
https://github.com/opencv/opencv_contrib/releases
https://github.com/opencv/opencv_3rdparty/tree/ippicv/master_20151201/ippicv
https://github.com/google/protobuf/releases
第四步:首先安裝opencv2
這裡我使用的是opencv-2.4.13.zip,首先把下載好的原始碼包拷貝到家(home)目錄下,然後執行以下的命令進行編譯安裝。
sudo unzip opencv-2.4.13.zip
cd opencv-2.4.13
mkdir build
cd build
sudo cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
sudo make -j7
sudo make install
不出意外的話,opencv2就編譯安裝完成了,在Ubuntu下,有時候建立目錄的時候,或者複製貼上檔案的時候,或者刪除檔案或者檔案目錄的時候,提示沒有許可權操作,我們可以在終端輸入:sudo nautilus命令進行相關操作(自動打開了一個視窗顯示了/root目錄,而且還有root許可權),操作完成之後,通過關閉以上命令開啟的視窗來退出當前命令,以便執行後續操作
安裝好之後,還需要配置安裝環境:
/bin/bash -c ‘echo “/usr/local/lib” > /etc/ld.so.conf.d/opencv.conf’
sudo ldconfig
或者是通過如下的操作:
sudo gedit /etc/ld.so.conf.d/opencv.conf
輸入庫檔案路徑:/usr/local/lib,儲存並退出:wq
sudo ldconfig
sudo gedit /etc/bash.bashrc
在最後加入以下兩行程式碼
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
通過如下的命令檢視當前的opencv版本
pkg-config –modversion opencv
通過如下的命令檢視當前版本的庫檔案呼叫路徑:
pkg-config –cflags opencv
第五步:接著安裝opencv3

這裡,我使用的是opencv-3.1.0.tar.gz,由於我需要安裝opencv_contrip-3.1.0.tar.gz,所以還需要下載上述的原始碼包,我們可以到上面提供的下載地址進行對應版本的下載,並將下載好的程式碼包放進家目錄。
需要注意的一點是,由於在cmake編譯的過程中會可能會因為下載ippicv_linux_20151201.tgz超時,導致編譯失敗。為此,我們還需要通過上述提供的地址下載相關的原始碼包。因為下載超時編譯失敗之後,我們可以通過如下的操作來完成後續的編譯安裝:
ippicv_linux_20151201.tgz 檔案複製並替換 /home/lq/opencv-3.1.0/3rdparty/ippicv/downloads/linux-808b791a6eac9ed78d32a7666804320e路徑下的同名檔案;這個過程可能由於沒有操作許可權二無法操作,可以通過上面介紹的命令進行相關的操作,這裡就不在介紹了。
網上有網友說,在編譯安裝opencv-3.1.0的時候,也可能因為下載protobuf-cpp-3.1.0.tar.gz超時而編譯失敗,由於我編譯安裝的時候,沒有遇到這種情況,這裡就直接介紹他們的處理方法,他們介紹的方法是這樣的:

protobuf-cpp-3.1.0.tar.gz檔案複製並替換
opencv_contrib-3.1.0/modules/dnn/.download/bd5e3eed635a8d32e2b99658633815ef/v3.1.0/ 路徑下的同名檔案。

接下來,介紹opencv3的編譯安裝全過程,其實跟opencv2差不多:
sudo apt-get update
sudo apt-get upgrade
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 tar -xzvf opencv-3.1.0.tar.gz
sudo tar -xzvf opencv_contrib-3.1.0.tar.gz
cd opencv-3.1.0
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local
/opencv3 -D OPENCV_EXTRA_MODULES_PATH=/home/lq/opencv_contrib-
3.1.0/modules/ ..
sudo make -j7
sudo make install
注意:我這裡安裝的opencv-3.1.0是安裝在/usr/local/opencv3目錄下的,而opencv-2.4.13是安裝在/usr/local下的,即安裝路徑不能是一樣的。

比如說,我的Ubuntu14下安裝了兩個版本的opencv,分別是opencv2.4.13(/usr/local),和opencv3.1.0(/usr.local/opencv3)預設情況下,系統呼叫的是opencv2.4.13這個版本的opencv,如果我們想來回切換呼叫不同的opencv版本來做開發的話,我們怎麼做呢?
通過以下的命令來檢視當前的opencv的版本:
pkg-config –modversion opencv

如果編譯好並安裝了opencv3.1.0版本,想切換到3.1.0版本,可以通過如下的方式:
通過修改bashrc檔案來設定PKG_ CONFIG_PATH 和 LD_LIBRARY_PATH的路徑來選擇對應的opencv版本 :
sudo gedit ~/.bashrc
並在檔案的預設追加新編譯的3.1.0版本的路徑,也就是cmake時:
CMAKE_INSTALL_PREFIX=/usr/local/opencv3的路徑

export PKG_CONFIG_PATH=/usr/local/opencv3/lib/pkgconfig
export LD_LIBRARY_PATH=/usr/local/opencv3/lib
然後執行命令:
source ~/.bashrc
後面用:
pkg-config –modversion opencv
檢視opencv版本的時候就是3.10版本
通過如下的命令檢視當前版本的庫檔案呼叫路徑:
pkg-config –cflags opencv