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 * depthrows是图像像素的行数 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;
}

效果
这里写图片描述

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值