文档中是这么写的:

Flags specifying the color type of a loaded image:
CV_LOAD_IMAGE_ANYDEPTH - If set, return 16-bit/32-bit image when the input has the corresponding depth, otherwise convert it to 8-bit.CV_LOAD_IMAGE_COLOR - If set, always convert image to the color oneCV_LOAD_IMAGE_GRAYSCALE - If set, always convert image to the grayscale one

0 Return a 3-channel color image.

Note
In the current implementation the alpha channel, if any, is stripped from the output image. Use negative value if you need the alpha channel.

=0 Return a grayscale image.<0 Return the loaded image as is (with alpha channel).
大致翻译一下:

Flags指定了所读取图片的颜色类型

CV_LOAD_IMAGE_ANYDEPTH返回图像的深度不变。

CV_LOAD_IMAGE_COLOR总是返回一个彩色图。

CV_LOAD_IMAGE_GRAYSCALE总是返回一个灰度图。

0返回3通道彩色图

注意:alpha 通道将被忽略,如果需要alpha 通道,请使用负值

=0返回灰度图

<0返回原图(带alpha 通道)

我觉得这里最大的问题就是一会说深度,一会说通道数,两个问题都没有说明白。

实测,当读取一副黑白图时,如果使用Flags=2(CV_LOAD_IMAGE_ANYDEPTH),此时Flags>0,得到的仍是黑白图而不是彩色图。其它的值,如1,3,4等均是彩色。

所以我觉得第一句话应该改为  CV_LOAD_IMAGE_ANYDEPTH返回图像原有的深度,但是通道数变为1,这是Flags>0中的特例

在源码中可以看到

自己测了一下,然后总结如下:

flag=-1时,8位深度,原通道

flag=0,8位深度,1通道

flag=1,   8位深度  ,3通道

flag=2,原深度,1通道

flag=3,  原深度,3通道

flag=4,8位深度 ,3通道


作者:阿翔ax
来源:CSDN
原文:https://blog.csdn.net/z914022466/article/details/52709981?utm_source=copy
版权声明:本文为博主原创文章,转载请附上博文链接!

opencv中imread第二个参数的意义的更多相关文章

  1. Listen第二个参数的意义

    今天主要回顾下listen的第二个参数的意义. 话说现在现在都是用框架写业务代码.真的很少在去关注最基本的socket函数的意义了.该忘得都忘得差不多了.~~~  要慢慢捡起来.  主要是在看redi ...

  2. OpenCV中imread失败cvLoadImage成功

    MYLAF 环境说明 编程环境:Windows 10(64bit), VS2013, OpenCV 2.4.12; 编程语言:C/C++: MYLAF 现象 在代码中,调用imread读取图片失败,但 ...

  3. 【记录一个问题】opencl enqueueWriteBuffer()中,cl_bool blocking参数设置无效

    err = queue.enqueueWriteBuffer(in_buf, true, 0, bmp_size, bmp_data, NULL, &event); 以上代码中,第二个参数设置 ...

  4. opencv的imread函数相对路径问题和 main 参数问题

    参考: https://blog.csdn.net/u013404374/article/details/80178822 https://blog.csdn.net/fujilove/article ...

  5. 关于replace()方法中第二个参数的转义问题

    如果你想通过Javascript代码在网页中呈现 \ 字符,则在JS代码中你必须输入两个反斜杠 \\,否则会报错.比如: var a = "\"; alert(a); //chro ...

  6. TensorFlow中max pooling层各参数的意义

    官方教程中没有解释pooling层各参数的意义,找了很久终于找到,在tensorflow/python/ops/gen_nn_ops.py中有写: def _max_pool(input, ksize ...

  7. IE6/7/8中parseInt第一个参数为非法八进制字符串且第二个参数不传时返回值为0

    JavaScript中数字有十进制.八进制.十六进制.以"0"开头的是八进制,"0x"或"0X"开头的是十六进制. parseInt用来把字 ...

  8. OpenCV中的SVM参数优化

    OpenCV中的SVM参数优化 svm参数优化opencv SVMSVR参数优化CvSVMopencv CvSVM        SVM(支持向量机)是机器学习算法里用得最多的一种算法.SVM最常用的 ...

  9. JavaScript中replace()方法的第二个参数解析

    语法 string.replace(searchvalue,newvalue) 参数值 searchvalue 必须.规定子字符串或要替换的模式的 RegExp 对象.请注意,如果该值是一个字符串,则 ...

随机推荐

  1. Hibernate学习笔记1.2(Annotation版本的Helloworld)

    hibernate 3.0之后开始支持Annotation 接着1.1的项目 首先 需要创建model Teacher.java. package com.hw.hibernate.model; pu ...

  2. effective C++学习三(仅供个人学习记录,本文摘录effective C++)

    条款 3:尽量用 new 和 delete 而不用 malloc 和 free  把 new和 delete 与malloc 和 free 混在一起用也是个坏想法.对一个用 new 获取来的指针调用 ...

  3. EF 数据查询效率对比

    优化的地方: 原地址:https://www.cnblogs.com/yaopengfei/p/9226328.html ①:如果仅是查询数据,并不对数据进行增.删.改操作,查询数据的时候可以取消状态 ...

  4. ADO.Net 数据库修改

    数据库的修改方法和增加一样,只是把增加语句换成了修改语句,后面执行语句是相同的 首先也是需要获取并接收输入的要修改的哪个数据以及修改后的数据 代码演示: using System; using Sys ...

  5. 用伪类:after画箭头

    在项目中,经常会用到尖头,尤其是表单中,会有剪头的样式,尽量不要用图片显示.用伪类实现. eg   查看更多 > html: <div class="more"> ...

  6. ssh架构之hibernate(二)进阶学习

    1.JPA入门 JPA的认识:JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中Java持久层AP ...

  7. Cacti ERROR: opening '*.rrd': No such file or directory 解决方法

    error: opening /home/cacti/rra/url-2 no such file or directory 在看Cacti Graph Debug Mode发现如下报错 RRDToo ...

  8. C语言标准io函数总结

    转自:http://blog.csdn.net/sun_top/article/details/4235992本来是在vscode上用markdown排好版的,结果复制到这上面就变了形,无奈. 函数列 ...

  9. AS不能真机调试 (转)

    经常遇到这种问题 现总结一下原因 打开手机的开发人员选项,允许USB调试 AS--->tools--->android-->Enable ADB Interation选项 勾上. A ...

  10. javascript 页面导出功能

    javascript 页面导出功能 <a class="btn" href="javascript:void(0);" onclick="win ...