1.图像的载入
1.1 函数原型
cv::imread函数可以从磁盘中载入图片
cv::imread(const string& filename, int flags=cv::IMREAD_COLOR)
imread读取图片时,不需要关注图片的格式,它可以分析文件的前几个字节(被称为文件的标识符或者"魔法序列")来确定文件的编码序列。
1.2 flags的定义
标志 | 含义 |
---|---|
cv::IMREAD_COLOR | 总是读取三通道图像 |
cv::IMREAD_GRAYSCALE | 读取单通道图像 |
cv::IMREAD_ANYCOLOR | 通道为文件实际通道数,不一定保留Alpha通道 |
cv::IMREAD_ANYDEPTH | 允许加载超过8bit深度的图像 |
cv::IMREAD_UNCHANGED | IMREAD_ANYCOLOR和IMREAD_ANYDEPTH的组合,保留Alpha通道 |
1.3 返回值
如果imread载入失败,会返回空的cv::Mat
cv::Mat::empty() == true //判断是否为空。
2.图像的保存
2.1 函数原型
cv::imwrite(
const string& filename,
cv::InputArray image,
const vector<int>& params = vector<int>()
)
常用的图片拓展名:
- jpg或者jpeg: 以baseline JPEG格式保存,8位数据,单通道或者三通道输入
- jp2: JPEG2000,8位或者16位数据,单通道或者三通道输入
- tif或者tiff: TIFF格式,8位或者16位数据,单通道,三通道或四通道输入
- png PNG,8位或者16位数据,单通道,三通道或四通道输入
- bmp BMP格式,8位数据,单通道,三通道或四通道输入
- ppm或者pgm NetPBM 8位数据,单通道(PGM),三通道(PPM)
2.2 标志
标志 | 含义 | 取值范围 | 默认值 |
---|---|---|---|
cv::IMWRITE_JPG_QUALITY | JPEG质量 | 0-100 | 95 |
cv::IMWRITE_PNG_COMPRESSION | png压缩值 | 0-9 | 3 |
cv::IMWRITE_PXM_BINARY | 对PPM,PGM或PBM文件是否使用二值格式 | 0或1 | 1 |