opencv学习——imread()读取图像

     学习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/8
       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 

#include 
#include 

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;
}

你可能感兴趣的:(opencv,opencv)