天天看點

Ubantu下第一個OPENCV的C++實列

需要的工具

make、cmake

make、cmake差別與聯系:

參考連結

https://www.jianshu.com/p/b3ddb0662c98

OPENCV編譯的順序就是:

原檔案--CMakeLists.txt(自己手動編寫) —cmake —makefile —make —生成可執行檔案

是以用Ubantu編寫OPENCV需要多修改一個CMakeLists.txt檔案

需要的檔案

Ubantu下第一個OPENCV的C++實列

第一步

C++代碼:

//該頭檔案中已經包含了OpenCV中各個子產品的頭檔案
  2 #include<opencv2/opencv.hpp>
  3 
  4 //cv 命名空間,如果希望不要每次都輸入 cv:: ,則可使用下面語句:using namespace cv;
  5 using namespace cv;
  6 
  7 /*
  8 int main(int argc, char **argv) 用于運作時,把指令行參數傳入主程式。
  9 argc -- 指令行參數總個數,包括可執行程式名。
 10 argv[i] -- 第 i 個參數。
 11 argv[0] -- 可執行程式名。
 12 例如運作: abc.exe
 13 argc 等于 1, argv[0] 是 "abc.exe"
 14 例如運作:rec.exe 4 5.2
 15 argc 等于 3, argv[0] 是 "rec.exe", argv[1] 是 "4", argv[2] 是 "5.2".
 16 */
 17 int main(int argc,char **argv)
 18 {
 19     //Mat是c++中類的概念,不再需要手動配置設定其記憶體大小,當不需要使用它的時候也不再需要手動釋放它
 20     Mat img=imread("lena.jpg");
 21     //和Python opencv的寫法相同,展示圖像
 22     imshow("meinv",img);
 23     //waitKey()是OpenCV中的内置函數,語句waitKey(0);表示“暫停程式,等待一個按鍵輸入”!也就是說,當程式執行到waitKey(0);時,程式被暫停運作,隻有當你輸
    入一個按鍵時,它才會繼續運作。
 24     waitKey(0);
 25 }

           

第二步

修改CMakeLists.txt(這個檔案可以在OPENCV/samples/cpp/example_cmake/檔案下拷貝到工程檔案中)

PROJECT(OpenCV_Example)           //這是建立一個工程項目(類似于我們VS中建立C++項目一樣),括号裡面時工程名,工程名我們可以任意給,最後程式編譯出來的可執行檔案就是這個名字

CMAKE_MINIMUM_REQUIRED(VERSION 2.6)    //這是對CMake工具最低版本要求,這裡我們要檢查下我們的CMake工具的版本資訊,我們可以使用指令“cmake --version”檢視
if(COMMAND cmake_policy)            
      cmake_policy(SET CMP0003 NEW)
endif(COMMAND cmake_policy)
 
FIND_PACKAGE( OpenCV REQUIRED )   //這是cmake用來查找opencv包用的,不用改

# Declare the target (an executable)
ADD_EXECUTABLE(OpenCV_Example read.cpp)      //這裡括号裡面的兩個參數分别是工程項目名和我們要編譯檔案名的意思,記住中間一空格鍵隔開

TARGET_LINK_LIBRARIES(OpenCV_Example ${OpenCV_LIBS})  //這是我們連結到OpenCV庫的環節,我們隻要更改前面第一個參數位我們的工程項目名即可

#MESSAGE(STATUS "OpenCV_LIBS: ${OpenCV_LIBS}")     //好了,就修改這麼點東西,儲存,關閉。
           

注意:有一些工程名字不能用,具體不知道什麼原因,我用過一個test,不得行,找了很久才跳出坑,報錯如下:

Ubantu下第一個OPENCV的C++實列

第三步

敲指令

sudo cmake .   //.的意思是執行目前目錄,一定要加上sudo,不然可能會報錯
sudo make      //同樣也一定要加上root權限
./OpenCV_Example   //執行檔案
           

參考連結:https://www.cnblogs.com/woshijpf/p/3840530.html

繼續閱讀