OpenCV中imread函数的使用

     最近在使用OpenCV中的imread函数时,对该函数的第二个参数flags的使用心存疑虑,不太明白其使用方法,因此对其做了一些
研究。
    首先,看一下它的定义,该函数位于Highgui.h和Loadsave.cpp文件中。    
         Mat imread( const string& filename, int flags )
         {
              Mat img;
              imread_( filename, flags, LOAD_MAT, &img );
              return img;
         }
接下来看一下imread_函数中关于flags的部分
         int type = decoder->type();
         if( flags != -1 )
         {
             if( (flags & CV_LOAD_IMAGE_ANYDEPTH) == 0 )
                  type = CV_MAKETYPE(CV_8U, CV_MAT_CN(type));

             if( (flags & CV_LOAD_IMAGE_COLOR) != 0 ||
                 ((flags & CV_LOAD_IMAGE_ANYCOLOR) != 0 && CV_MAT_CN(type) > 1) )
                  type = CV_MAKETYPE(CV_MAT_DEPTH(type), 3);
             else
                  type = CV_MAKETYPE(CV_MAT_DEPTH(type), 1);
         }
其中,CV_LOAD_IMAGE_XXX定义位于Highgui_c.h文件中
        enum
        {
        /* 8bit, color or not */
           CV_LOAD_IMAGE_UNCHANGED  =-1,
        /* 8bit, gray */
           CV_LOAD_IMAGE_GRAYSCALE  =0,
        /* ?, color */
           CV_LOAD_IMAGE_COLOR      =1,
        /* any depth, ? */
           CV_LOAD_IMAGE_ANYDEPTH   =2,
        /* ?, any color */
           CV_LOAD_IMAGE_ANYCOLOR   =4
        };
由此,我们可以得出如下结论:
flags = -1:imread按解码得到的方式读入图像
flags = 0:imread按单通道的方式读入图像,即灰白图像
flags = 1:imread按三通道方式读入图像,即彩色图像

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值