一、图像色彩空间
空间 | 解释 | 优缺点 |
---|---|---|
RGB | RGB色彩空间由红绿蓝三原色的色度定义,借此可以定义出相应的色三角,生成其它颜色 | |
YUV | Y:表示明度(luminance),也就是灰度值;U/V:表示色度(chrominance),作用是描述影像色彩及饱和度。用于指定像素的颜色,Y信息和UV信息是分离的,没有UV信息也能显示完整的图像,只不过是黑白的,这样的设计很好解决了彩色电视和黑白电视的兼容问题 | 空间占用少:RGB24一帧的大小size=width×heigth×3 Byte;RGB32一帧的大小size=width×heigth×4 Byte;YUV420一帧的大小size=width×heigth×1.5 Byte |
HSB | H:色相,色彩的相貌和特征,如:红,橙,黄等;S:纯度,指色彩的鲜艳程度,也叫饱和度,原色是纯度最高的色彩;B:明度,指色彩的亮度或者明度; | |
HSL | H:色相,色彩的相貌和特征,如:红,橙,黄等;S:纯度,指色彩的鲜艳程度,也叫饱和度,原色是纯度最高的色彩;L:亮度 | |
HSV | H:色调,用角度度量,取值范围为0°~360°,从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240°。它们的补色是:黄色为60°,青色为180°,紫色为300°;S:饱和度,原色是纯度最高的色彩;V:明度,明度表示颜色明亮的程度,对于光源色,明度值与发光体的光亮度有关;对于物体色,此值和物体的透射比或反射比有关。通常取值范围为0%(黑)到100%(白); |
二、imwrite:保存图片
实例分析
using namespace std;
using namespace cv;
class QuickDemo
{
public:
void ColorSpace_Demo(Mat& image)
{
Mat gray_image, hsv_image;
cvtColor(image, hsv_image, COLOR_BGR2HSV);
cvtColor(image, gray_image, COLOR_BGR2GRAY);
imshow("HSV", hsv_image);
imshow("GRAY", gray_image);
waitKey(0);
destroyWindow("show");
imwrite("data/hsv_image.bmp", hsv_image);
imwrite("data/gray_image.bmp", gray_image);
}
};
int main()
{
Mat src = imread("data/right.bmp"); // 加载任意深度
// 判断图片是否加载成功
if (src.empty())
{
cout << "load image error !" << endl;
}
QuickDemo qd;
qd.ColorSpace_Demo(src);
return 0;
}