C++|OpenCV-HSV图像

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq78442761/article/details/82805610

图像处理一般不在RGB域,因为各个颜色连接程度比较大。
而图片处理一般采用HSV域,有利于图片分割

色调H
用角度度量,取值范围为0°~360°,从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240°。它们的补色是:黄色为60°,青色为180°,品红为300°;

饱和度S
饱和度S表示颜色接近光谱色的程度。一种颜色,可以看成是某种光谱色与白色混合的结果。其中光谱色所占的比例愈大,颜色接近光谱色的程度就愈高,颜色的饱和度也就愈高。饱和度高,颜色则深而艳。光谱色的白光成分为0,饱和度达到最高。通常取值范围为0%~100%,值越大,颜色越饱和。

明度V
明度表示颜色明亮的程度,对于光源色,明度值与发光体的光亮度有关;对于物体色,此值和物体的透射比或反射比有关。通常取值范围为0%(黑)到100%(白)。


将图分割为H  S  V通道
然后对v通道进行直方图均衡(亮度进行提升)

HSV表

源码如下:

#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/imgproc/imgproc_c.h>
#include <iostream>
#include <vector>
using namespace std;
using namespace cv;


int main(){
	Mat originalMat=imread("src.jpg");
	Mat HSVMat,mergeMat;
	vector<Mat> planes;
	cvtColor(originalMat,HSVMat,COLOR_BGR2HSV);
	split(HSVMat,planes);
	equalizeHist(planes[2],planes[2]);
	merge(planes,mergeMat);

	imshow("original Picture",originalMat);
	imshow("HSV Picture",HSVMat);
	imshow("equalizeHistInV Picture",mergeMat);

	waitKey();
	getchar();
	return 0;
}

运行截图如下:

猜你喜欢

转载自blog.csdn.net/qq78442761/article/details/82805610