openCV學習——一、圖像讀取、顯示、輸出


一、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>&params=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.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM