
谈到颜色空间,简单总结一下,当前我们用到的主要的颜色空间格式包含以下几种:
一、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灰度图的转变呢?
这是实际效果图
原图
灰度图