【2】OpenCV入門-讀取、顯示、存儲一幅圖像

1.涉及函數

  (1)imread

函數原型:    Mat imread(const string& filename, int flags=1)

參數說明:①filename:文件名。②flags:加載圖片的方式

備註:imread支持的文件類型:

    Windows位圖:*bmp,*dib 
    JPEG文件;*jpeg,*jpg,*jpe 
    JPEG2000文件:*j2
    PNG圖片:*png
    便攜文件格式:*pbm,*pgm,*pm 
    Sun rasters光柵文件:*s,*ras 

    flags的類型:

    CV_LOA_ IMAGE_UNCHANGED等價取值爲-1,這個標識在新版本中已被廢置,忽略。
    CV_LOAD_IMAGE_GRAYSCALE——等價取值爲0,如果取這個標識的話,始終將圖像轉換成灰度再返回。
    CV_LOAD_IMAGE_COLOR—等價取值爲1,如果取這個標識,總是轉換圖像到彩色再返回。

    CV_LOAD_IMAGE_ANYDEPTH等價取值爲2,如果取這個標識,且載入的圖像的深度爲16位或者32位,就返回對應深度的圖像,否則,就轉換爲8位圖像再返回。

     重點關注中間兩個枚舉類型即可。

(2)namedWindow

函數原型:void namedwindow(const string& winname, int flags=WINDOW_AUTOSIZE);

參數說明:①winname:窗口的名稱,窗口的唯一識別標誌。②flags:窗口的標誌

備註:窗口標誌flags的說明

   WINDOW_NORMAL,設置這個值,用戶可以改變窗口的大小(沒有限制)。OpenCV2中它還可以寫爲 CV_WINDOW_NORMAL 
    WINDOW_AUTOSIZE,設置這個值,窗口大小會自動調整以適應所顯示的圖像,並且用戶不能手動改變窗口大小。 OpenCV2中它還可以寫爲CV_WINDOW_AUTOSIZE。
    WINDOW_OPENGL,設置這個值,窗口創建的時候會支持 OpenGL OpenCV2中它還可以寫爲 
CV_WINDOW_OPENGL。

(3) imshow

函數原型:void imshow(const string& winname, InputArray mat) 

(4)imwrite

函數原型:bool imwrite(const string& filename, InputArray img, const vector<int> params=vector<int>())
參數說明:params:表示爲特定格式保存的參數編碼。

                  對於JPEG格式的圖片,這個參數表示從0到100的圖片質量(CV_IMWRITE_JPEG_QUALITY),默認值是95。
                  對於PNG格式的圖片,這個參數表示壓縮級別(CV_IMWRITE_PNG_COMPRESSION)從0到9.較高的值意味着更小的尺寸和更長的壓縮時間,默認值是3。其他不重要的就不說了。

2.代碼演示

#include <iostream>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;

int main()
{
	//【1】加載圖像
	Mat src = imread("E:/OneDrive/ProgramFolder/image/test.jpg");
	if (src.empty())
	{
		printf("could not load the image");
		return -1;
	}
	//【2】顯示圖像
	namedWindow("srcImage");
	imshow("srcImage", src);
	//【3】保存圖像
	imwrite("dst.png", src);
	waitKey(0);
	return 0;
}

代碼說明:waitKey()-是等待按鍵按下的函數,傳入0表示一直等待。此函數只有在imshow()顯示了窗口之後纔有作用。

結果:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章