學習opencv 最開始一般都是從讀取一張圖片開始,在opencv 中我們可通過 imread() 來操作。首先我們看下imread 方法:
原型 Mat imread( const String& filename, int flags )
第一個參數 filename: 表示圖像的路徑。
第二個參數 flags:表示讀取圖像的方式。
IMREAD_UNCHANGED
= -1,表示讀取原圖, 不進行任何改變
IMREAD_GRAYSCALE = 0,表示以灰度圖方式讀取原圖
IMREAD_COLOR = 1,表示以RGB方式讀取原圖
默認不加 flags 的話,表示不做改變讀取原圖。
enum ImreadModes {
IMREAD_UNCHANGED = -1, //如果設置,則返回的數據帶有alpha通道(R,G,B,A 四個通道),否則沒有alpha通道
IMREAD_GRAYSCALE = 0, //如果設置,則將圖像轉換爲單通道灰度圖像
IMREAD_COLOR = 1, //如果設置,則將圖像轉換成3通道BGR彩色圖像
IMREAD_ANYDEPTH = 2, //如果設置,則在輸入具有相應深度時返回16位/32位圖像,否則將其轉換爲8位
IMREAD_ANYCOLOR = 4, //如果設置,則圖像可能以任何顏色格式讀取
IMREAD_LOAD_GDAL = 8, //如果設置,使用gdal驅動程序加載圖像
IMREAD_REDUCED_GRAYSCALE_2 = 16, //如果設置,總是將圖像轉換爲單通道灰度圖像且圖像大小減少1/2
IMREAD_REDUCED_COLOR_2 = 17, //如果設置,總是將圖像轉換爲3通道BGR彩色圖像且圖像大小減少1/2
IMREAD_REDUCED_GRAYSCALE_4 = 32, //如果設置,總是將圖像轉換爲單通道灰度圖像且圖像大小減少1/4
IMREAD_REDUCED_COLOR_4 = 33, //如果設置,總是將圖像轉換爲3通道BGR彩色圖像且圖像大小減少1/4
IMREAD_REDUCED_GRAYSCALE_8 = 64, //如果設置,總是將圖像轉換爲單通道灰度圖像且圖像大小減少1/8
IMREAD_REDUCED_COLOR_8 = 65, //如果設置,總是將圖像轉換爲3通道BGR彩色圖像且圖像大小減少1/4
IMREAD_IGNORE_ORIENTATION = 128 //如果設置,不會根據EXIF的方向標誌旋轉圖像
};
filename 圖片路徑編譯器裏面接受 單斜杆/, 雙斜杆//, 以及反向雙斜杆 \\。 不支持反向單斜杆\。
Mat SrcMat = imread("F:/build/test_app/correct.png"); // 單斜杆/
Mat SrcMat = imread("F://build//test_app//correct.png"); // 雙斜杆//
Mat SrcMat = imread("F:\\build\\test_app\\correct.png"); // 反向雙斜杆 \\
示例代碼:
#include "stdafx.h"
#include <iostream>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
Mat SrcMat = imread("F:\\build\\test_app\\correct.png", IMREAD_UNCHANGED);
//IMREAD_GRAYSCALE:原圖做爲灰度圖加載
if(SrcMat.empty()) {
cout << "SrcMat.empty" << endl;
return -1;
}
imshow("image input", SrcMat);
waitKey(0);
return 0;
}