一、Mat imread(const string& filename,int flags=1),用於讀取圖片
1、參數介紹
filename:載入的圖片的路徑名。支持windows位圖(bmp,dib)、JPEG文件(.jpeg,.jpg,.jpe)、JPEG2000文件(.jp2)、PNG圖片(.png)、便攜文件格式(.pbm,.pgm,.ppm)、Sun rasters光柵文件(.sr,.ras)、TIFF文件(.tiff,.tif)
flags:表示載入標識,指定加載圖像的顏色類型,默認為三通道彩色圖像。
常用標志符:
- CV_LOAD_IMAGE_UNCHANGED——等價取值為-1
- CV_LOAD_IMAGE_GRAYSCALE——等價取值為0,將圖像轉化為灰度
- CV_LOAD_IMAGE_COLOR——等價取值為1,將圖像轉化為彩色
- CV_LOAD_IMAGE_ANYDEPTH——等價取值為2,當載入圖像深度為16位或32位,返回對應深度的圖像,否則轉化為8位圖像返回
- CV_LOAD_IMAGE_ANYCOLOR——等價取值為4,無損的源圖像
當輸入有沖突時,采用較小數字值。CV_LOAD_IMAGE_COLOR|CV_LOAD_IMAGE_ANYCOLOR將載入三通道圖;CV_LOAD_IMAGE_ANYDEPTH|CV_LOAD_IMAGE_ANYCOLOR將載入最真實無損的源圖像。
若以數值表示,則:
- flags>0返回一個3通道的彩色圖像
- flags=0返回灰度圖像
- flags<0返回包含Alpha通道的加載圖像
當以彩色載入時,通道順序為BGR(藍、綠、紅),而非RGB。
二、void imshow(const string& winname,InputArray mat),用於顯示一副圖像
1、參數介紹
winname:填需要顯示的窗口標志名稱
mat:填需要顯示的圖像
2、注意事項
如果窗口用CV_WINDOW_AUTOSIZE(默認值)創建的,那么imshow將顯示圖像原始大小,否則將進行縮放以適應窗口:
- 如果圖像為8位無符號類型,顯示原來圖像
- 如果為16位無符號或32位整型,使用像素值除以256,將值的范圍從[0,255*256]映射到[0,255]
- 如果圖像為32位浮點型,像素值乘以255.
如果窗口創建時設定支持OpenGL(WINDOW_OPENGL),則imshow還支持ogl::Buffer、ogl::Texture2D以及gpu::GpuMat作為輸入。
三、void namedWindow(const string& winname, int flags=WINDOW_AUTOSIZE),用於創建窗口
1、參數介紹
name:填寫窗口名稱,將被用作窗口標志符
flags:窗口標志類型:
- WINDOW_NORMAL,可改變窗口大小
- WINDOW_AUTOSIZE(值為1),窗口大小會自動調整以適應所要顯示的圖像,且用戶無法手動調整
- WINDOW_OPENGL,窗口創建時將支持OpenGL
2、其他
可以自行手動關閉窗口並釋放空間:destroyWindow()或destroyAllWindows()。但是程序退出時,所有窗口將被系統自動關閉。
四、bool imwrite(const string& filename, InputArray img,const vector<int>¶ms=vector<int>()),用於輸出圖像到文件
1、參數介紹
filename:填寫要寫入的文件名,需帶上后綴,即文件類型名。
img:需要輸出的圖像,一般為Mat類型。
params:特定格式保存的參數編碼,一般不需要填寫。
- 對於JPEG格式,參數從0到100,表示圖片質量(CV_IMWRITE_JPEG_QUALITY)
- 對於PNG格式,表示壓縮級別(CV_IMWRITE_PNG_COMPRESSION)從0~9.較高的值意味着更小的尺寸和更長的壓縮時間,默認為3.
- 對於PPM、PGM或PBM格式,表示一個二進制格式標識(CV_IMWRITE_PXM_BINARY),取值為0或1,默認為1.