天天看點

Opencv學習(二)之圖檔的加載、顯示與儲存

1. imread()函數

在Opencv中如果想加載一副圖檔用imread()函數。

2.imshow()函數

在Opencv中如果想在視窗顯示一副圖像用imshow()函數。

有時在imshow()函數之前使用nameWindows() 函數建立特定的視窗,用來顯示圖像。

3.imwrite()函數

在Opencv中可以調用imwrite()函數将處理後的圖像寫入指定的檔案目錄。

下面先通過執行個體示範說明以上幾個函數的用法,再就其用法進行介紹。

#include <iostream>
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>

using namespace std;
using namespace cv;

int main()
{
	Mat srcImage = imread("D:\\Tencent\\test.jpg", IMREAD_COLOR);      
	namedWindow("Opencv圖像讀取-origin", WINDOW_AUTOSIZE);  //建立一個名字為“Opencv圖像讀取-origin”的視窗,視窗屬性為自适應
	imshow("Opencv圖像讀取-origin", srcImage);          //顯示讀入的圖像,視窗名稱與namedWindow中名字要一緻


	Mat srcImageGray;                       //建立一個Mat類型用于存儲将讀取到的彩色圖像轉換為灰階圖之後的圖像
	cvtColor(srcImage, srcImageGray, CV_RGB2GRAY);      //使用函數CV_RGB2GRAY将彩色圖像轉換為灰階圖
	namedWindow("to灰階圖", WINDOW_NORMAL);
	imshow("to空灰階圖", srcImageGray);
	imwrite("to灰階圖.jpg", srcImageGray);          //将轉換的灰階圖以.bmp格式存儲,預設路徑為工程目錄下


	waitKey(0);


	return 0;
}
           

注:以上程式代碼為學習他人部落格,并非原創。

運作結果如下:

Opencv學習(二)之圖檔的加載、顯示與儲存
Opencv學習(二)之圖檔的加載、顯示與儲存

下面對以上四個函數的用法做一簡單總結:

1-imread()函數,用來讀取要加載的圖像,定義如下:

CV_EXPORTS_W Mat imread( const String& filename, int flags = IMREAD_COLOR );
           

第一個參數為待讀取圖檔的名稱(當圖檔不在工程目錄下時還要包含圖檔路徑,如例程所示),第二個參數為圖檔的辨別,可指定加載圖檔的類型,初學階段暫且使用預設設定(如例程所示)。

第二個參數還有另外一種設定方法,如下所示:

flags>0 :傳回一個3通道的彩色圖像;

flags=0 :傳回灰階圖像;

flags>0 :傳回一個包含Alpha通道的圖像;(預設情況不是從該通道載入)

2-nameWindows()函數

函數原型如下:

CV_EXPORTS_W void namedWindow(const String& winname, int flags = WINDOW_AUTOSIZE);
           

第一個參數為視窗名;第二個參數為視窗屬性(初學階段暫且設定為WINDOW_AUTOSIZE,表示視窗大小随顯示圖檔的大小自動調整)。

3-imshow()函數

函數原型如下:

CV_EXPORTS_W void imshow(const String& winname, InputArray mat);
           

第一個參數為視窗名,表示在該視窗上顯示圖像(注:如果在imshow()函數之前沒有使用nameWindows()函數,則第一個參數的視窗名稱任意,否則要與nameWindows()中建立的視窗名稱一緻);第二個參數為要顯示的圖像(具體用法參考例程)。

4-imwrite()函數

函數原型如下:

CV_EXPORTS_W bool imwrite( const String& filename, InputArray img, const std::vector<int>& params = std::vector<int>());
           

第一個參數:給要儲存的圖像命名(要包含字尾);第二個參數:要儲存的圖像;第三個參數:儲存為特定格式。

(注:對于初次使用部落格的學習者來說,可能不會上傳運作的效果圖,不妨嘗試用下imwrite()函數儲存後再上傳。)

最後,對于例程中出現的其它函數,将在後面的學習中逐一介紹,暫且通過例程了解其用法。