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()顯示了窗口之後纔有作用。
結果: