Linux上編譯opencv程序

在linux上編譯opencv的方法大致有兩種,一種是直接按照c/c++程序那樣在命令行編譯,只是在編譯時要包含進opencv動態鏈接庫.另一種是用Cmake的方法.

命令行:

zoegreen@zoegreen-Lenovo-IdeaPad-Y470:~/robot$ g++ test.cpp -o test `pkg-config --cflags --libs opencv`

這裏我們用到了一個工具“pkg-config”,它主要有以下幾個功能:
檢查庫的版本號。如果所需要的庫的版本不滿足要求,它會打印出錯誤信息,避免鏈接錯誤版本的庫文件。 獲得編譯預處理參數,如宏定義,頭文件的位置。 獲得鏈接參數,如庫及依賴的其它庫的位置,文件名及其它一些連接參數。

  所有有了這個工具之後編譯就很方便了(不過在此之前要確保安裝的OpenCV的安裝鏈接庫文件的目錄下有一個pkgconfig文件夾,在該文件夾裏面有個opencv.pc的文件,其實這就是pkg-config下OpenCV的配置文件)。

  使用pkg-config時,選項–cflags 它是用來指定程序在編譯時所需要頭文件所在的目錄,選項 –libs則是指定程序在鏈接時所需要的動態鏈接庫的目錄。例如我下面這張圖就顯示了我電腦上OpenCV的相關目錄。
這裏還要注意的一點就是:pkg-config和它的參數需要被包含在引號裏,而且這個引號是鍵盤左上角的那個 ` !!! 很多人以爲是雙引號鍵的那個引號,其實並不是,那樣的話編譯會出錯:

g++: error: pkg-config --cflags --libs opencv: 沒有那個文件或目

編譯成功後,運行程序:
這裏寫圖片描述

Hough圓檢測程序(可以看出我臉是有多圓了吧= =)…

Cmake工具

make 工具程序能自動地確定一個大程序系統中哪些程序文件需要被重新編譯,併發出命令對這些程 序文件進行編譯。在使用 make 之前,需要編寫 Makefile 信息文件,該文件描述了整個程序包中各程序之間的關係,並針對每個需要更新的文件給出具體的控制命令。
Makefile 文件相當於程序編譯過程中的批處理文件。是工具程序 make 運行時的輸入數據文件。只要在含有 Makefile 的當前目錄中鍵入 make 命令,它就會依據 Makefile 文件中的設置對源程序或目標代碼文件進行編譯、連接或進行安裝等活動。
在 Makefile 文件中,開頭爲 ‘#’ 的行是註釋行。文件開頭部分的 ‘=’ 賦值語句定義了一些參數或命令的縮寫。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章