首頁 > 軟體

Ubuntu下編譯安裝OpenCV 2.4.13以及Python呼叫OpenCV方法

2020-06-16 16:43:24

一、依賴包的安裝

1. build-essential 軟體包,為編譯程式提供必需軟體包的列表資訊,這樣軟體包才知道標頭檔案、庫函數在哪裡。

sudo apt-get install build-essential

2. 下面依賴關係主要是為了能夠支援讀寫圖片以及視訊等。

sudo apt-get install  libgtk2.0-dev libavcodec-dev libavformat-dev  libtiff4-dev  libswscale-dev libjasper-dev

3. 安裝cmake

sudo apt-get install cmake

4.安裝pkg-config,它是一個提供從原始碼中編譯軟體時查詢已安裝的庫時使用的統一介面的計算機軟體。

sudo apt-get install pkg-config

二、編譯安裝過程

至於為什麼編譯還是先看看這個:

g++編譯執行c++程式碼流程以及動態庫靜態庫的建立與使用  https://www.linuxidc.com/Linux/2018-10/155023.htm

下載原始碼:
opencv 2.4.13官網

目前還是推薦下2.4版本的吧,一直在更新,並且庫比較全。
解壓後進入opencv的目錄。

1. 使用cmake來檢測編譯環境以及生成makefile以及其他project資訊,在使用cmake過程可以設定一些引數。

cd opencv-2.4.9 
mkdir release 
cd release 
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..

CMAKE_BUILD_TYPE=RELEASE表示release版本
CMAKE_INSTALL_PREFIX=/usr/local表示安裝的目錄,其中包含include等標頭檔案

2. 使用make編譯

make

3.使用make install安裝

sudo make install

三、設定lib庫路徑以及環境變數

1 設定lib庫路徑

設定lib庫是為了能讓編譯你自己寫的c++程式碼的時候能夠找到所包含的opencv模組的動態庫或者靜態庫,其中編譯生成的動態庫在這個資料夾下:/usr/local/lib/
開啟檔案

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

新增庫目錄

/usr/local/lib

儲存後執行下面命令使之生效

sudo ldconfig

2 設定環境變數

完成了動態庫的共用,還不能使用opencv來程式設計,還需要為程式指定openvc的標頭檔案位置。這裡使用pkg-config命令來完成。首先在 /etc/profile 中新增pkgconfig路徑,操作如下:
開啟檔案

sudo gedit /etc/profile

在文字最後新增

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

執行下面命令使之生效

source /etc/profile

其中pkg-config 維護著一個關於opencv的組態檔,這個檔案(opencv.pc)在目錄 /usr/local/lib/pkgconfig,這個檔案記錄著opencv的一些動態庫資訊,還有標頭檔案資訊,通過pkg-config --libs opencv命令和pkg-config --cflags opencv可以檢視具體資訊。

四、編譯測試程式碼並測試

1 編譯

在samples/c目錄下找到build_all.sh並執行。

./build_all.sh

2 測試

變成綠色的為可執行檔案,執行下面命令可以測試,例如:

./find_obj1

3 用g++編譯自己的程式碼

g++_opencv# g++ cat.cpp -I/usr/local/include/opencv -I/usr/local/include -L/usr/local/lib -lopencv_core -lopencv_imgproc -lopencv_highgui -o cat

其中-I表示include的目錄,-L表示lib的目錄,-lopencv_core指利用opencv_core.so這個動態連結庫。這樣就可以編譯啦。
其中程式碼為:

#include<opencv2/core.hpp>
#include<opencv2/highgui.hpp>
#include<opencv2/imgproc.hpp>
#include<iostream>

using namespace std;
using namespace cv;

int main()
{
        Mat src = imread("cat.jpg");
        //Mat dst;
        //Canny(src, dst, 0.1, 0.1);
        //imshow("dst", src);
        //waitKey();
        cout<<"read successful!"<<endl;
        return 0;
}

效果:

root@52acd6c79e97:/home/huxiang_j/work/jni/g++_opencv# g++ cat.cpp -I/usr/local/include/opencv -I/usr/local/include -L/usr/local/lib -lopencv_core -lopencv_imgproc -lopencv_highgui -o cat
root@52acd6c79e97:/home/huxiang_j/work/jni/g++_opencv# ls
cat  cat.cpp  cat.jpg
1234

也可以利用pkg-config –cflags opencv和pkg-config –libs opencv這倆個來編譯,一個指向標頭檔案,一個指向lib庫檔案。

root@52acd6c79e97:/home/huxiang_j/work/jni/g++_opencv# g++ `pkg-config --cflags opencv` cat.cpp -o cat `pkg-config --libs opencv`
root@52acd6c79e97:/home/huxiang_j/work/jni/g++_opencv# ls
cat  cat.cpp  cat.jpg
root@52acd6c79e97:/home/huxiang_j/work/jni/g++_opencv# ./cat
read successful!

五、Python使用opencv

1 先用which python找到python的安裝目錄(每個人的不同,可以自行更改),只需要把opencv編譯的cv2.so和原始的cv.py拷貝到python安裝目錄下的site-packages路徑下面即可。

例如:

cp opencv_dir/build/lib/cv2.so ENV/lib/python2.7/site-packages/
cp opencv_dir/modules/python/src2/cv.py ENV/lib/python2.7/site-packages/

有的也是複製到這,因為python安裝的位置不同

/usr/local/lib/python2.7/site-packages

2 測試python例子

在opencv_dir/samples/python2可以找到python的測試用例,同理可以執行那些綠色的可執行檔案,例如:

./find_obj.py

OpenCV官方教學中文版(For Python) PDF  https://www.linuxidc.com/Linux/2015-08/121400.htm
Ubuntu 14.04安裝OpenCV2.4.9  https://www.linuxidc.com/Linux/2016-07/132884.htm
Ubuntu 16.04上用CMake圖形介面交叉編譯樹莓派的OpenCV3.0 https://www.linuxidc.com/Linux/2016-10/135914.htm
Ubuntu 16.04中安裝OpenCV 2.4.11  https://www.linuxidc.com/Linux/2016-07/132882.htm
Ubuntu 16.04下Matlab2014a+Anaconda2+OpenCV3.1+Caffe安裝  https://www.linuxidc.com/Linux/2016-07/132860.htm
Linux上安裝和編譯OpenCV3.0.0  https://www.linuxidc.com/Linux/2017-07/145446.htm
Ubuntu 16.04下OpenCV安裝筆記和例程 https://www.linuxidc.com/Linux/2017-08/146027.htm
Ubuntu 16.04下TensorFlow+Caffe+OpenCV3.1+Theano部署  https://www.linuxidc.com/Linux/2017-01/139503.htm
Ubuntu 16.04 編譯安裝OpenCV 3.1及OpenCV多版本切換 https://www.linuxidc.com/Linux/2017-01/139325.htm
[翻譯]Ubuntu 14.04, 13.10 下安裝 OpenCV 2.4.9  https://www.linuxidc.com/Linux/2014-12/110045.htm
Ubuntu 安裝 OpenCV 2.4.9  https://www.linuxidc.com/Linux/2016-12/138293.htm
Ubuntu 17.04下OpenCV原始碼編譯安裝  https://www.linuxidc.com/Linux/2017-10/147316.htm


IT145.com E-mail:sddin#qq.com