1. 程式人生 > >《OpenCV3程式設計入門》——3.1.4 imread()函式

《OpenCV3程式設計入門》——3.1.4 imread()函式

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函式的講解。

如上程式碼執行結果如下:

結果圖