OpenCV入門(一)—— 使用cmake編譯工程及基本模塊介紹

OpenCV學習筆記


1.OpenCV入門

因爲我是在學習slam的過程中遇到了OpenCV的問題,所以我就決定先把OpenCV的基本內容給摸清,並且學習的環境是在Ubuntu16.04下,所以我選擇使用C++進行代碼的編寫,並且使用cmake對工程進行編譯。

在我此前安裝ROS系統的時候已經下載並安裝了OpenCV庫,所以可以直接上手,而無需再進行配置。如果有需要可以參考鏈接下載並安裝OpenCV庫:https://blog.csdn.net/gxuphf123/article/details/81121791

由於使用cmake編譯工程,所以得編寫一個CMakeLists.txt文件。
cmake的使用參考鏈接: https://www.cnblogs.com/lidabo/p/7359422.html

//CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
project(test1)

# set c++ standard of 11
set( CMAKE_CXX_FLAGS "-std=c++11" )

# find the library of OpenCV
find_package( OpenCV 3 REQUIRED )

# add head file
include_directories( ${OpenCV_INCLUDE_DIRS} )

add_executable( test1 test1.cpp )

#link the library of OpenCV
target_link_libraries( test1 ${OpenCV_LIBS} )


然後繼續編寫cpp代碼

//test1.cpp
#include<iostream>
using namespace std;
//引入opencv的模塊
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
//引入cv命名空間
using namespace cv;

int main(int argc,char **argv)
{
	if(argc!=2){
           cout<<"Usage:display_image ImageToloadAndDisplay"<<endl;
           return -1;
	} 
	
	Mat image;
	image =imread(argv[1]);  //read file
	
	if(!image.data){
	   cout<<"Counld not open or find the image"<<endl;
 	   return -1;
	}

        namedWindow("Display window",CV_WINDOW_AUTOSIZE);   //crate a window fordisplay
	imshow("Display window",image);   //show our image inside it.
	
	waitKey(0);
	return 0;
}
   

# 然後進行工程編譯,首先創建一個build文件夾
$ mkdir build
# 進入build文件夾
$ cd build
# 在build文件夾下進行編譯命令
$ cmake ..
$ make 
# 編譯完成之後會產生一個綠色文件,即可執行文件
$ ./[projectname]  #運行該執行文件

創建build文件夾的目的在於cmake會產生中間文件,當我們想要發佈代碼時,並不希望中間文件一起發佈出去,所以將中間文件生成在build文件夾中,必要的時候可以直接刪除。

命令運行實例


2.OpenCV的基本模塊

  • core : 定義了基本的數據結構
  • imgproc: 該模塊包含了線性和非線性的圖像濾波 、圖像的幾何變換、顏色空間轉換、結構分析和形狀描述等
  • video : 該模塊包含了運動估計、背景分離、對象跟蹤
  • calib3d : 該模塊包含了基本的多視角幾何算法,單個立體攝像頭的標定,物體姿態估計,立體相似性算法,3D信息的重建
  • feature2d : 該模塊包含了顯著特徵檢測,描述,特徵匹配
  • objdetect : 該模塊包含了物體檢測和預定義好的分類器實例(人臉、汽車等)
  • highgui : 該模塊包含了視頻捕捉、圖像和視頻的編碼解碼、圖形交互界面的接口
  • gpu : 該模塊利用GPU對OpenCV模塊進行加速算法
  • ml : 機器學習模塊,包括貝葉斯分類器、決策樹、神經網絡、梯度樹、SVM等

參考鏈接:https://blog.csdn.net/yang_xian521/article/details/6903855
每個模塊的詳細內容請參考該鏈接:https://blog.csdn.net/sinat_35257860/article/details/64121433



OpenCV的常用函數:
https://www.cnblogs.com/xiaopanlyu/p/4561728.html

發佈了49 篇原創文章 · 獲贊 11 · 訪問量 3065
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章