這次是要將Opencv架設在Ubuntu 16.04的環境裡,讓我可以在ubuntu的環境下也可以快速的做影像處理的動作,這個架設,跟在windows環境下架設大同小異,一樣到官網抓下你所要編譯的opencv版本,用cmake的方式將library給建立起來,這次我使用的版本是3.3.0版,所建立的library是static版本,所以在使用cmake時的設定要稍微做個改變,接下來就是紀錄如何建立有opencv的開發環境了。

Step1: 首先我先參考OpenCV官網所教學的方法,建立在編譯opencv所需要的package。

參考網址-->https://docs.opencv.org/2.4/doc/tutorials/introduction/linux_install/linux_install.html#

依照官網指示,我們需要以下幾種package

  • GCC 4.4.x or later
  • CMake 2.6 or higher
  • Git
  • GTK+2.x or higher, including headers (libgtk2.0-dev)
  • pkg-config
  • Python 2.6 or later and Numpy 1.5 or later with developer packages (python-dev, python-numpy)
  • ffmpeg or libav development packages: libavcodec-dev, libavformat-dev, libswscale-dev

而GTK的開發包已在其他文章有獨立介紹,可參考https://even1018.pixnet.net/blog/post/350617019

 

Step2: 再來安裝其他尚未有的開發包

$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev

$ sudo apt-get install libxvidcore-dev libx264-dev
$ sudo apt-get install libgtk-3-dev
$ sudo apt-get install libatlas-base-dev gfortran
$ sudo apt-get install python2.7-dev python3.5-dev

以下是官網建議的安裝包,一個個輸入指令後即可將沒安裝到的都安裝好,雖然有optional選項,基本上我全安裝了。

$sudo apt-get install build-essential  <==[compiler]

$sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev <==[required]

$sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev <==[optional]

Step3: 下載Open3.3.0 source code

我的習慣是建立一個開發環境目錄,將source code解壓後的所有檔案放置在此,以後要開發都在這裡處理即可。

我是在家目錄下建立opencv所屬的資料夾

 

$ sudo mkdir /home/code/opencv-3.3.0

下載source code到/home/code/opencv-3.3.0,解壓縮後會產生opencv-3.3.0的資料夾。

$ cd /home/code/opencv-3.3.0
$ sudo wget https://github.com/opencv/opencv/archive/3.3.0.zip
$ unzip sudo unzip 3.3.0.zip 

 

Step4: 使用cmake建立opencv開發專案

使用下指令的方式既複雜又容易出錯,所以我使用GUI的方式來使用cmake

首先,先安裝cmake gui

$ sudo apt-get install cmake-qt-gui

呼叫

$ sudo cmake-gui 

即會出現cmake的GUI畫面

where is the source code: /home/evan/code/opencv3.3.0/opencv-3.3.0 <==指定到我們解壓的目錄

where to build the binaries: /home/evan/code/opencv3.3.0/opencv-3.3.0/build <==將專案自動建立在build下

 

Step5: 設定libray為static library,再進行配置及產生專案

在configure前,請在畫面配置處將BUILD_SGARED_LIBS選項拿掉。

接著進行configure,這動作會花點時間,請耐心等待。

在執行generate,即可在build下產生專案

 

Step6: 進行專案的編譯及安裝opencv

進入build資料夾,編譯及安裝開始

$ make  #編譯

 

$ sudo make install #安裝opencv到系統

 

$ sudo source /etc/bash.bashrc #查詢版號

 

 

Step7: 將opencv libaray所在路徑導入ld配置 

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

打開新檔案,把/usr/local/lib這行加上去。

或是使用cmd的方式加入

$ sudo sh -c 'echo "/usr/local/lib" >> /etc/ld.so.conf.d/opencv.conf'

 

$ sudo ldcinfig #更新配置

在文件的末尾添加
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
和 export PKG_CONFIG_PATH #將pkgconfig加入環境變量
使用vim編輯後存檔

$ sudo vim /etc/bash.bashrc 

 

$ sudo -s source /etc/bash.bashrc #更新環境變數

 

Step8:"新增opencv測試程式,看我們的開發環境是否成功

這裡我建立一個叫mytestcode的資料夾,寫一個簡單顯示出lena.jpg的測試程式,可參考opencv官網的步驟

$ sudo mkdir mytestcode

以下是 sample code,擷取於opencv官網

////////////////////////////////////////////////

#include <stdio.h>
#include <opencv2/opencv.hpp>

using namespace cv;

int main(int argc, char** argv )
{
    if ( argc != 2 )
    {
        printf("usage: DisplayImage.out <Image_Path>\n");
        return -1;
    }

    Mat image;
    image = imread( argv[1], 1 );

    if ( !image.data )
    {
        printf("No image data \n");
        return -1;
    }
    namedWindow("Display Image", WINDOW_AUTOSIZE );
    imshow("Display Image", image);

    waitKey(0);

    return 0;
}

建立make file。CMakeLists.txt file. It should look like this:

cmake_minimum_required(VERSION 2.8)
project( DisplayImage )
find_package( OpenCV REQUIRED )
add_executable( DisplayImage DisplayImage.cpp )
target_link_libraries( DisplayImage ${OpenCV_LIBS} )

產生執行檔

This part is easy, just proceed as with any other project using CMake:

$sudo cd <DisplayImage_directory>

$sudo cmake .

$sudo make

結果:

$ ./DisplayImage lena.jpg

Display Image - Lena

執行成功,表示你的ubuntu環境已成功安裝opencv的編譯環境了。

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 ^_^ 的頭像
    ^_^

    一切的安排,都是最好的安排

    ^_^ 發表在 痞客邦 留言(0) 人氣()


    留言列表 留言列表

    發表留言