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;
}
注:以上程式代碼為學習他人部落格,并非原創。
運作結果如下:
下面對以上四個函數的用法做一簡單總結:
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()函數儲存後再上傳。)
最後,對于例程中出現的其它函數,将在後面的學習中逐一介紹,暫且通過例程了解其用法。