知识点整理
HSV色彩空间
- HSV色彩空间:HSV(色相/饱和度/明度)颜色空间是表示类似于RGB颜色模型的颜色空间的模型。饱和度的变化代表颜色成分的多少。明度通道描述颜色的亮度。
- 色调(hue)表示主色,我们使用的颜色名称(例如绿色、 黄色和红色)就对应了不同的色调值;饱和度(saturation)表示颜色的鲜艳程度,柔和的颜色饱 和度较低,而彩虹的颜色饱和度就很高亮度(brightness)是一个主观的属性,表示某种颜色的光亮程度。
- 肤色的色调范围有论文数据:H∈[34°,50°]
- HSV中只有Hue一个通道表示颜色:根据色相通道(Channel)对颜色类型进行建模,因此在需要根据颜色对对象进行分割的图像处理任务中非常有用。
-RGB颜色空间中的颜色使用三个通道对进行编码,因此基于颜色对图像中的对象进行分割更加困难。
- 使用
OpenCV cv :: inRange
函数执行基本阈值操作。基于HSV颜色空间中的像素值范围来检测对象。
void inRange( InputArray src,
InputArray lowerb,
InputArray upperb,
OutputArray dst);
第一个参数:输入图像
第二个参数:H、S、V的最小值,示例:Scalar(low_H, low_S, low_V)
第三个参数:H、S、V的最大值,示例:Scalar(low_H, low_S, low_V)
第四个参数:输出图像,要和输入图像有相同的尺寸且为CV_8U类
Mat hsv = image.clone();
Mat frame_threshold = image.clone();
cvtColor(image, hsv, COLOR_BGR2HSV);
double low_H = 35;
double low_S = 43;
double low_V = 46;
double high_H = 77;
double high_S = 255;
double high_V = 255;
inRange(hsv, Scalar(low_H, low_S, low_V), Scalar(high_H, high_S, high_V), frame_threshold);
openCV图像像素操作
- RGB色彩空间
inputmat.at<Vec3b>(x, y)
:三通道分别为BGR,而不是RGB
inputmat.at<Vec3b>(x, y)[0]