opencv将灰度图转为彩色图

使用opencv将一幅灰度图转为彩色图。函数

使用函数:cvtColor();源码

    Mat imgGray= imread("gray.jpg",0);
    Mat imgRGB;
    cvtColor(imgGray, imgRGB, COLOR_GRAY2RGB);string

说明:输入图像gray.jpg是单通道,8bit图像。it

 

如此简单的过程,还折腾了一会,主要缘由是:opencv

刚开始读入图像写为:Mat imgGray= imread("gray.jpg");结果在调用cvtColor()函数时出错。file

由于此时读入的imgGray不是8bit的单通道图像。imread(const string& filename, int flags=1)函数的第二个参数可设置读入图像的方式,函数默认以RGB三波段形式读入图像,即flags=1,而需读入一幅灰度图则须要设置flags=0,以8bit单通道的形式读入。im

opencv源码中,图像读入方式:总结

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,
/* ?, no rotate */
    CV_LOAD_IMAGE_IGNORE_ORIENTATION  =128
};img

总结以下:co

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

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

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

flag=2,原深度,1通道

flag=3,  原深度,3通道