1. 程式人生 > >在ubuntu18,0系統中構造opencv3.4.3專案

在ubuntu18,0系統中構造opencv3.4.3專案

在終端中編譯完成opencv3.4.3的原始碼之後,如何使用又成了一個問題.   長期被windows系統中各種IDE侵蝕之後,才入坑Linux不久的我還是對如何完成一個專案一無所知,總是不能用GCC一個個的去編譯吧. 然後,發現了makefile…這才是開啟UNIX的正確方式.   根據我的理解,安裝好了opencv想要使用的話需要指定路徑,系統預設的標頭檔案主要是從系統環境變數指定的路徑中找到相應路徑,自己的路徑就需要去配置.   這個時候就需要寫makefile.txt檔案來統籌編譯了.   makefile檔案將一個軟體工程中的數量龐雜的原始檔,定義一系列規則來指定那些檔案先編譯,哪些後編譯,以及很多更復雜的操作.   作為一顆剛開始成長的小白菜還是決定抓緊一切機會更全面的學習.   #想要了解更多請參照

makefile使用總結#  opencv安裝包裡有samples檔案包,裡面有CMakeLists.txt配置的例子,標註的非常清楚.

# cmake needs this line
cmake_minimum_required(VERSION 2.8)#這裡的版本號需要根據你安裝的去填寫

# Define project name
project(opencv_example_project)#如果直接在文件中執行可以不寫,不過要配置整個專案的話還是需要寫的

# 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)

# If the package has been found, several variables will
# be set, you can find the full list with descriptions
# in the OpenCVConfig.cmake file.
# Print some message showing some of them
message(STATUS "OpenCV library status:")
message(STATUS "    version: ${OpenCV_VERSION}")
message(STATUS "    libraries: ${OpenCV_LIBS}")
message(STATUS "    include path: ${OpenCV_INCLUDE_DIRS}")

if(CMAKE_VERSION VERSION_LESS "2.8.11")
  # Add OpenCV headers location to your include paths#新增標頭檔案
  include_directories(${OpenCV_INCLUDE_DIRS})
endif()

# Declare the executable target built from your sources
add_executable(opencv_example example.cpp)

以上為軟體中自帶的介紹. 現在以一個簡單的展示影象的程式做為例子:

	#建立CMakeLists.txt,內容如下:
cmake_minimum_required(VERSION 3.10.2)

 project( DisplayImage )
 # 尋找OpenCV庫

 find_package( OpenCV 3.4.3 REQUIRED )

 # 新增標頭檔案

 include_directories( ${OpenCV_INCLUDE_DIRS} )
 add_executable( DisplayImage  DisplayImage.cpp )#括號第一個引數代表工程名,第二個代表專案名

 # 連結OpenCV庫

 target_link_libraries( DisplayImage  ${OpenCV_LIBS} )#第一個工程名,第二個不需要修改
 #寫cpp程式:
 $touch DisplayImage.cpp
 $gedit DisplayImage.cpp#可以用其他編輯器
 #內容
 #include "highgui.h"

int main( int argc, char** argv ){
	
	IplImage* img = cvLoadImage(argv[1]);#把讀取到的圖片載入記憶體
	cvNamedWindow( "Example1", CV_WINDOW_AUTOSIZE );#建立一個視窗
	cvShowImage("Example1", img );#展示圖片
	cvWaitKey(0);
	cvReleaseImage( &img );#釋放記憶體
	cvDestroyWindow("Example1");#關閉視窗
}

#儲存後,在終端輸入
$cmake .
$make
#編譯完成後
$./DisplayImage img.jpeg  #輸入執行程式名及所需要顯示的影象名,此時路徑應在同一目錄下.
# 執行後即可顯示圖片

文章僅為個人實踐過程,如有錯誤之處,歡迎大神們指點.