1. 程式人生 > >opencv基本的幾個影象處理函式

opencv基本的幾個影象處理函式

轉眼大學四年就要過去了,終於到了做畢設的時候。選的題目我只能說比較僵,目標跟蹤。。。根本不會,不過研究生導師是搞這方面的,早點學習一下也挺不錯的。

我老師給我的要求是使用opencv編寫一個目標跟蹤的程式,之前從沒接觸過opencv,接下來幾周只能和opencv硬肛了。今天學習了一下最基礎的幾個函式,記錄一下學習內容。

(1)圖片讀取imread()+Mat物件

要進行影象處理,首先肯定是要讀取圖片,在opencv中讀取圖片使用imread函式,該函式返回一個Mat物件,Mat物件是用來存影象星資訊的。imread函式的具體使用方式如下:Mat Obj = imread("圖片的路徑(不在工程路徑下時要採用絕對路徑)",讀取模式(1代表讀取為BGR圖片,大於1代表讀取為灰度圖))。

(2)圖片展示namedWindow()+imshow()

圖片處理後肯定要展示效果,這時就需要namedWindow函式與imshow函式配合使用。namedWindow相當於建立一個框,通過imshow函式把圖片和框關聯起來。具體的使用方式如下:namedWindow("圖片框的名字");imshow("與相關聯的圖片框的名字相同",Mat物件);//其實不用namedWindow函式也能展示,但是採用namedWindow函式有利於介面的設計。

(3)圖片簡單處理(轉換顏色空間)cvtColor()

所謂的顏色空間轉換就比如說把一張BGR圖片轉換成灰度圖,這需要一個叫cvtColor的函式,具體使用方式如下:cvtColor(源Mat物件,目標Mat物件,轉換要求);

(4)圖片儲存imwrite()

處理後的圖片肯定需要儲存下來,這就需要imwrite函式,具體使用方式如下:imwrite("儲存路徑",需要儲存的Mat物件);該函式可以把影象存為jpg,png,tif等格式,具體存為什麼格式取決與路徑中的字尾。

程式碼展示:

#include<opencv2\opencv.hpp>
using namespace cv;
int main()
{
	Mat img = imread("2.jpg", 1);//如果圖片和工程不在同一個目錄就要寫絕對路徑
	namedWindow("效果1");
	imshow("效果1", img);
	img = imread("2.jpg", 2);//讀取為灰度圖
	namedWindow("效果2");
	imshow("效果2", img);
	img = imread("2.jpg", 1);//讀取為BGR圖
	Mat dst;
	cvtColor(img, dst, CV_BGR2GRAY);//BGR轉灰度圖
	namedWindow("效果3");
	imshow("效果3", dst);
	imwrite("new.jpg", dst);//儲存轉換後的圖
	waitKey(0);//等待鍵入,沒有這條語句結果就一閃而過
}


儲存的檔案: