OpenCV 將灰度圖轉為彩色圖


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

使用函數:cvtColor();

1 Mat imgGray= imread("gray.jpg",0); 2 Mat imgRGB; 3 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
{undefined
/* 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通道


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM