OpenCV - 应用情景小计

有道是:好记性不如烂笔头。记下经验,更重要的是记下踩过的坑

场景:读取图像

Mat imread(const string& filename, int flags=1 )

这里的flags默认是1,参数可能取值为

  • > 0, CV_LOAD_IMAGE_COLOR, If set, always convert image to the color one. 若有 alpha 属性,则舍弃。
  • = 0, CV_LOAD_IMAGE_GRAYSCALE, If set, always convert image to the grayscale one. Return a grayscale image.
  • < 0, 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.

注意,读取彩图的时候,可以简写成 Mat img=imread(path), 但是读取灰度图的时候必须写全 Mat img=imread(path, 0)。否则,不会报错,但会自动改变数据类型

  • 使用 imread(path, 0) 误读取彩图,尺寸不变,数据类型 16 -> 0 (CV_8UC3->CV_8U),最后结果自动变为灰度图
  • 使用 imread(path) 误读灰度图,尺寸不变,数据类型 0 -> 16(CV_8U -> CV_8UC3),最后结果变为24bits,灰度复制三份变为GBR。

猜你喜欢

转载自blog.csdn.net/baishuo8/article/details/80904093