1. 程式人生 > >Ubuntu14.04 OpenCV編譯安裝與測試

Ubuntu14.04 OpenCV編譯安裝與測試

1簡介

OpenCV,英文全稱Open Source Computer Vision Library。OpenCV是一個基於(開源)發行的跨平臺計算機視覺庫,可以執行在Linux、Windows和Mac OS作業系統上。它輕量級而且高效——由一系列 C 函式和少量 C++ 類構成,同時提供了Python、Ruby、MATLAB等語言的介面,實現了影象處理和計算機視覺方面的很多通用演算法。

官方主頁:http://opencv.org/

2安裝包

下載連結:http://opencv.org/downloads.html

安裝包:opencv-2.4.11.zip

請不要下載opencv2.3.1, 會報ffmpeg的錯誤。另外, 最新版的opencv3 和opencv2 架構不同。 如果大家用opencv2用的順手, 先不要升級opencv3了。

3安裝

安裝編譯opencv的依賴包

sudo apt-get install libgtk2.0-dev pkg-config

無法顯示攝像頭採集到的視訊,可能是因為沒有安裝libgtk2.0-dev和pkg-config

opencv中與影象顯示相關的函式是基於libgtk2.0-dev,pkg-config用於組織編譯後的opencv標頭檔案與庫檔案等資訊。

配置opencv,在這裡使用cmake-gui進行配置,使用cmake直接配置會報錯,後面會介紹。

OpenCV 2.2以後版本需要使用Cmake生成makefile檔案,因此需要先安裝cmake。

在終端輸入

$cmake-gui

點選"configure",選擇"Unix Makefiles","Use defaultnative compilers"。因為這裡只是編譯普通到PC版OpenCV。出現下面的介面,更改設定,把WITH-CUDA和BUILD_opencv_gpu選項去掉打鉤,然後依次點Configure和Generate按鈕生成Configure檔案。(如果設定好之後 generate是灰色的 在點一次configure)

再點選"Generate",即生成Makefile。


進入"/root/jiangyf/opencv/opencv-2.4.13/build"目錄,輸入

$make

$ sudo  make install

到此,OpenCV編譯完成。

4環境變數

安裝成功後還需要設定opencv的環境變數

開啟檔案

sudo gedit /etc/profile ##個人比較喜歡把環境變數放在/etc/profile裡面,'~/.bashrc'一樣

在檔案最後新增

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

執行下列命令, 使環境變數立即生效

source /etc/profile

5lib庫路徑

開啟檔案

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

一般是新建檔案,opencv的庫一般安裝在’/usr/local/lib’資料夾下,在檔案內新增

/usr/local/lib 

執行下列命令使之立刻生效

sudo ldconfig

經過上面的流程,這樣就可以在eclipse裡或者qtcreator裡用opencv了。 不過要配置號相應的路徑和lib檔案。

6示例程式碼

對opencv的sample進行編譯並執行

cd /root/jiangyf/opencv/opencv-2.4.13/samples/c

./build_all.sh

./facedetect --cascade="/usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_alt.xml" --scale=1.5 lena.jpg


7命令列編譯與執行程式碼

#include<iostream>
#include"opencv2/opencv.hpp"
 
usingnamespace std;
usingnamespace cv;
 
int main()
{
    // Capturing multiple AVT cameras can bedone by simply initiating
    // two VideoCaptures after eachother.
    VideoCapture camera1(0);
    Mat frame1;
 
    for(;;){
        camera1 >> frame1;
 
        imshow("camera 1 frame",frame1); 
 
        int key = waitKey(10);
        if(key == 27){
            break;
        }
    }
 
    return 0;
}

在終端輸入

//直接編譯連結
gcc `pkg-config --cflags opencv` -o camera camera.c `pkg-config --libs opencv`
或gcc camera.c -o camera `pkg-config --cflags --libs opencv`
//先編譯再連結:
gcc `pkg-config --cflags opencv` -c camera.c
gcc `pkg-config --libs opencv` -o camera camera.o
執行:
./camera