1. 程式人生 > >Ubuntu 16.04 下使用CMake編譯的第一個OpenCV程式

Ubuntu 16.04 下使用CMake編譯的第一個OpenCV程式

在安裝Ubuntu 16.04的時候,安裝的編輯器是sublime text 3,所以一直想將對OpenCV程式的編譯能力直接配置到sublime裡,但是在網上找了好多教程,發現基本上是在sublime裡面重新配置一下GCC編譯器,但只給了一段程式碼,具體每部分什麼意思也沒講,所以就沒有用,還是老老實實的用了推薦的CMake方法。其實挺想將CMake直接配置成像GCC那樣的,但是目前的水平還不會直接配置,因為這個首選要進行CMakeLists.txt檔案的檢測,還要分辨裡面的內容,對於新的程式檔案還需要向原來的List檔案中寫入配置內容,感覺還挺複雜的,不過我還是認為是可以實現的,扯遠了,下面開始第一個程式。

程式碼

首先就是要有一段OpenCV的程式碼,這裡直接用的下面的程式碼,和官方給的基本上是一樣的,檔名也沒有改直接就是DisplayImage.cpp,從這裡就能看出來自己有多懶。

#include <iostream>
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
using namespace cv;
using namespace std;
int main(int argc, char** argv )
{

    if ( argc != 2 )
    {
        cout
<<"usage: DisplayImage.out <Image_Path>\n"; return -1; } Mat image; image = imread( argv[1], 1 ); if ( !image.data ) { cout<<"No image data \n"; return -1; } namedWindow("Display Image", WINDOW_AUTOSIZE ); imshow("Display Image"
, image); waitKey(0); return 0; }

建立CMakeLists.txt檔案

這裡原來是按照官網上給的直接手複製過來的,官網上的程式碼如下:

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

最後發現會出現如下圖所示的情況:
錯誤

對於這麼多的error一看就暈了,直接懵B,然後鼓搗了一會也沒整好,最後想了一下,還是直接從前面編譯OpenCV的那些samples裡複製過來一個用一下試試吧,然後根據自己的程式檔案改了一下,就有了下面的CMakeLists.txt檔案內容:

# cmake needs this line
cmake_minimum_required(VERSION 2.8)

# Enable C++11
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)

# Define project name
project(DisplayImage)

# Find OpenCV, you may need to set OpenCV_DIR variable
# to the absolute path to the directory containing OpenCVConfig.cmake file
# via the command line or GUI
find_package(OpenCV REQUIRED)  
include_directories( ${OpenCV_INCLUDE_DIRS} )  #新複製過來的是沒有這一行的,自己加的
# Declare the executable target built from your sources
add_executable(DisplayImage DisplayImage.cpp)

# Link your application with OpenCV libraries
target_link_libraries(DisplayImage ${OpenCV_LIBS})

發現和原來的相比,多了對C++11的支援,然後再執行第三步的程式碼就不會出現一大堆令人頭疼的error了。

生成可執行檔案

接下來執行以下指令,生成可執行檔案:

cd <DisplayImage_directory>
cmake . #空格,之後有一個點,雖然不知道什麼意思,猜應該是當前目錄
make

執行完上面的內容,如下圖所示,如果是第一次執行,執行cmake . 之後顯示的內容會多一些,我這是再次執行的
正確

然後生成下圖中綠色的可執行檔案:
可執行程式

執行以下程式碼

./DisplayImage 001.jpg  #我的圖片名就叫001.jpg,懶就用數字命名了

然後就OK了!附個圖慶祝一下!
成了

好了,記錄到這裡這篇第一個OpenCV程式的部落格圓滿了!