
談到顔色空間,簡單總結一下,目前我們用到的主要的顔色空間格式包含以下幾種:
一、RGB:這是一種現代顯示器最終顯示使用比較多的一種格式;
二、YUV格式:由于其占用的空間相比RGB較小,經常在作為編碼的輸入資料格式;
三、灰階圖:簡單了解,就是YUV中隻有Y分量,而不考慮UV分量,比較古老的黑白電視的效果便是這樣的喽。
OpenCV提供了不同顔色空間之間進行轉換的接口cvtColor,該接口大概漲這個樣子:
cvtColor(src, dst, transfer_type)
src與dst分别表示轉換前的圖檔與轉換後的圖檔;
transfer_type表示格式轉換的方法:
如從BGR轉到YUV: COLOR_BGR2YCrCb (OpenCV定義了類似這樣的一百多種轉換的方法,此處不詳述)。
請你思考一下:如果将BRG轉換為灰階圖,會是什麼樣的參數呢?
示例代碼
int main(int argc, char *argv[])
{
Mat src = imread("2.jpg");
Mat gray;
cvtColor(src, gray, COLOR_BGR2GRAY);
namedWindow("src");
namedWindow("gray");
imshow("src", src);
imshow("gray", gray);
waitKey(0);
return 0;
}
複制
想一想是否可以自己實作從BGR到GRAY灰階圖的轉變呢?
這是實際效果圖
原圖
灰階圖