《OpenCV3程式設計入門》——3.1.4 imread()函式
阿新 • • 發佈:2018-11-17
imread函式用於讀取檔案中的圖片到OpenCV中
格式為:
Mat imread(const string& filename, int flags=1);
Mat類是用於儲存影象yi即其他矩陣資料的資料結構。
引數說明:
1. 第一個引數,const string&型別的filename,指我們需要載入圖片路徑名。
2. 第二個引數,int型別的flags,為載入標識,指定一個載入影象的顏色型別,預設值為1。
影象型別有以下幾種:
CV_LOAD_IMAGE_UNCHANGED——等價取值為-1,這個標識在新版本中已被廢置,可以忽略
CV_LOAD_IMAGE_GRAYSCALE——等價取值為0,返回灰色影象
CV_LOAD_IMAGE_COLOR——等價取值為1,返回彩色影象
CV_LOAD_IMAGE_ANYDEPTH——等價取值為2,若影象深度是16位或者32位,就返回對應深度,否則,返回8點陣圖像
如果輸入有衝突的標誌,將採用較小的數字值
因為flags是int型,我們也可以這樣進行:
flags>0返回一個3通道彩色影象(解碼後的影象以BGR儲存)
flags=0返回灰度影象
flags<0返回包含Alpha通道的載入影象
來看幾個載入的示例:
# include <opencv2/core/core.hpp> # include <opencv2/highgui/highgui.hpp> using namespace cv; void main(){ Mat image0 = imread("1.jpg",2 | 4); //載入無損的源影象 Mat image1 = imread("1.jpg",0); //載入灰度影象 Mat image2 = imread("1.jpg",199); //載入3通道彩色影象 imshow("【無損圖】", image0); //顯示影象 imshow("【灰度圖】", image1); imshow("【彩色圖】", image2); waitKey(0); //等待任意鍵按下 }
為了顯示讀取的效果,上邊程式碼也用了imshow函式,如對其有疑問,可以參考本部落格對imshow函式的講解。
如上程式碼執行結果如下: