opencv常用api简单分析: imread()
Posted arvik
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了opencv常用api简单分析: imread()相关的知识,希望对你有一定的参考价值。
原型
Mat imread( const String& filename, int flags )
参数
filename
想要读取/加载的图片文件名称
flags
标志位,该标志位影响imread最终读取图片转换成Mat
的数据存储形式。它的取值限于枚举类ImreadModes
中。默认值IMREAD_COLOR
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的方向标志旋转图像
;
IMREAD_UNCHANGED
标志决定了是否有alpha通道
注意
色彩通道
灰度图通常都是8 bit的像素深度, 通道数为1
彩色RGB图一般是24bit的像素深度通道数为3
32bit的彩色图一般包含RGBA四个通道,其中A表示的是透明度索引
其他彩色图(16bit或者32bit)压缩RGB格式或者YUV格式,通道数为2,需要手动分离存放顺序
默认是BGR的顺序依次存放到0,1,2通道中数据存储
读入的数据被存入一个二维数组中, 图像数据占用的内存大小为(单位:字节)rows * cols * depth
,rows
是图像像素的行数cols
是图像像素的列数depth
是图像颜色深度,灰度图一般是1 ,RGB图一般是3
样例
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/core/core.hpp>
using namespace cv;
int main()
cv::Mat img1 = cv::imread("./test1.jpg");
cv::Mat img2 = cv::imread("./test1.jpg", IMREAD_GRAYSCALE);
cv::Mat img3 = cv::imread("./test1.jpg", IMREAD_COLOR);
cv::Mat img4 = cv::imread("./test1.jpg", IMREAD_REDUCED_GRAYSCALE_2);
cv::Mat img5 = cv::imread("./test1.jpg", IMREAD_REDUCED_COLOR_4);
cv::imshow("默认",img1);
cv::imshow("单通道灰度图",img2);
cv::imshow("brg彩图",img3);
cv::imshow("1/2 单通道灰度图",img4);
cv::imshow("1/4 brg彩图",img5);
cv::waitKey();
return 0;
效果
以上是关于opencv常用api简单分析: imread()的主要内容,如果未能解决你的问题,请参考以下文章
opencv常用api简单分析:几个基本绘图操作(LineRectangleCircleEllipse...)
opencv常用api简单分析:几个基本绘图操作(LineRectangleCircleEllipse...)