opencv学习笔记之图像模型

文章目录

  • 前言
  • 一、图像颜色模型
        • 1.RGB模型
        • 2.YUV模型
        • 3.HSV模型
        • 4.Lab模型
        • 5.GRAY模型(灰度图像模型)
        • 6.不同模型之间的转换函数


前言

记录opencv中图像的进阶操作

一、图像颜色模型

1.RGB模型

RGB模型中还可能会有第四个alpha通道,表示颜色的透明度,这样也就变成了RGBA模型

2.YUV模型

电视信号系统所采用的颜色编码方式。

亮度(Y)

红色分量与亮度的信号差值(U)

蓝色与亮度的差值(V)

3.HSV模型

色度(Hue)

饱和度(Saturation)

亮度(Value)

4.Lab模型

亮度(Luminosity)

a,b表示两个颜色通道,两者的取值都在-128~127

一种基于生理特征的颜色模型

5.GRAY模型(灰度图像模型)

只有单通道,取值为0~255,其中0表示黑色,255表示白色

常用的RGB模型转灰度图方式:

GRAY=0.3R+0.59G+0.11B

6.不同模型之间的转换函数

void cvtColor(InputArray src,OutputArray dst,int code,int dstCn=0)

src:待转换颜色模型的原始图像

dst:转换颜色模型后的目标图像

code:颜色空间转换的标志

dstCn:目标图像中的通道数

例举一下常用的转换参数:

标志参数 作用
COLOR_BGR2BGRA 对RGB图像添加alpha通道
COLOR_BGR2RGB 彩色通道颜色顺序的更改
COLOR_BGR2GRAY 彩色图像转成灰度图像
COLOR_GRAY2BGR 灰度图像转成彩色图像(伪彩色)
COLOR_BGR2YUV RGB颜色模型转成YUV颜色模型
COLOR_YUV2BGR YUV颜色模型转成RGB颜色模型
COLOR_BGR2HSV RGB颜色模型转成HSV颜色模型
COLOR_HSV2BGR HSV颜色模型转成RGB颜色模型
COLOR_BGR2Lab RGB颜色模型转成Lab颜色模型
COLOR_Lab2BGR Lab颜色模型转成RGB颜色模型

通过一段代码来展示一下cvtColor函数的使用方法

#include  //加载OpenCV4的头文件
#include
#include
using namespace std;
using namespace cv; //OpenCV命名空间

int main()
{
	Mat img = imread("lena.jpg");
	if (img.empty())
	{
		cout << "请确认图像文件名是否正确" << endl;
		return -1;
	}
	Mat gray, HSV, YUV, Lab, img32;  //声明几个目标图像
	img.convertTo(img32, CV_32F, 1.0 / 255);  //将CV_8U类型转换成CV_32F类型
	cvtColor(img32, HSV, COLOR_BGR2HSV);
	cvtColor(img32, YUV, COLOR_BGR2YUV);
	cvtColor(img32, Lab, COLOR_BGR2Lab);
	cvtColor(img32, gray, COLOR_BGR2GRAY);
	imshow("原图",img32);
	imshow("HSV", HSV);
	imshow("YUV", YUV);
	imshow("Lab", Lab);
	imshow("GRAY", gray);
	waitKey(0);
	return 0;  //程序结束
}

效果如下:

原图:

opencv学习笔记之图像模型_第1张图片

HSV颜色模型:

opencv学习笔记之图像模型_第2张图片

YUV颜色模型:

opencv学习笔记之图像模型_第3张图片

Lab颜色模型:

opencv学习笔记之图像模型_第4张图片

灰度图:

opencv学习笔记之图像模型_第5张图片

你可能感兴趣的:(opencv,计算机视觉,图像处理)