OpenCV文档阅读笔记-Imread flags解析与实例(保存透明图像)
目录
官方解析
Imread flags
enum ImreadModel{
IMREAD_UNCHANGED=1, //读取原图不做任何修改,有alpha通道就读取,无alpha通道那么图片会被省略
IMREAD_GRAYSCALE=0, //图图像转化为单通道的灰度图像;
IMREAD_COLOR=1, //转化为3通道的BGR图像imread函数默认情况下参数就为这个;
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通道的RGB,并且把原图尺寸减少1/2;
IMREAD_REDUCED_GRAYSCALE_4=32, //把图片转化为单通道的BGR图片,并且原尺寸减少1/4;
IMREAD_REDUCED_COLOR_4=33, //把图片转化为3通道的RGB,并且把原图尺寸减少1/4;
IMREAD_REDUCED_GRAYSCALE_8=64, //把图片转化为单通道的BGR图片,并且原尺寸减少1/8;
IMREAD_REDUCED_COLOR_8=65, //把图片转化为3通道的RGB,并且把原图尺寸减少1/8;
IMREAD_IGNORE_ORIENTATION=128 //不因EXIF's方向标志而转化图像的坐标
};
博主例子(保存透明图像)
这样的骚操作,读取一个bng带透明通道的图,再保存
源码如下:
#include <iostream>
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/imgproc/imgproc_c.h>
using namespace std;
using namespace cv;
int main(){
Mat matSrc=imread("5.png",IMREAD_UNCHANGED);
imshow("5.png",matSrc);
imwrite("6.png",matSrc);
waitKey();
getchar();
return 0;
}
程序运行截图如下:
可以发现,保存的图片会大点,原因呢,暂时也不太清楚,后期再补充