1. 程式人生 > >opencv將灰度圖轉為彩色圖

opencv將灰度圖轉為彩色圖

使用opencv將一幅灰度圖轉為彩色圖。

使用函式:cvtColor();

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

說明:輸入影象gray.jpg是單通道,8bit影象。

 

如此簡單的過程,還折騰了一會,主要原因是:

剛開始讀入影象寫為:Mat imgGray= imread("gray.jpg");結果在呼叫cvtColor()函式時出錯。

因為此時讀入的imgGray不是8bit的單通道影象。imread(const string& filename, int flags=1)函式的第二個引數可設定讀入影象的方式,函式預設以RGB三波段形式讀入影象,即flags=1,而需讀入一幅灰度圖則需要設定flags=0,以8bit單通道的形式讀入。

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
};

總結如下:

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

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

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

flag=2,原深度,1通道

flag=3,  原深度,3通道