C++ opencv之图像直方图均衡化(equalizeHist)

这篇博客我们来学习C++opencv之图像直方图均衡化。

一、主要内容

1.1 直方图均衡化

直方图均衡化是通过拉伸像素强度分布范围来增强图像对比度的一种方法.

1.2 作用

用于提高图像的质量

1.3 函数原型

C++: void equalizeHist(InputArray src, OutputArray dst)

二、代码演示

#include 
#include 

using namespace cv;
using namespace std;

int main(int artc, char** argv) {
	Mat src = imread("C:/Users/Dell/Desktop/picture/butterfly.jpg");

	if (src.empty()) {
		printf("could not load image...\n");
		return -1;
	}
	//1、灰度
	namedWindow("input", WINDOW_AUTOSIZE);
	imshow("input1", src);
	Mat gray, dst;
	cvtColor(src, gray, COLOR_BGR2GRAY);
	imshow("input", gray);
	equalizeHist(gray, dst);
	imshow("eq", dst);
    //2、色彩空间转换
	Mat ycrcb;
	cvtColor(src, ycrcb, COLOR_BGR2YCrCb);
	vector<Mat>channels;
	split(ycrcb, channels);
	equalizeHist(channels[0], channels[0]);
	Mat result;
	merge(channels, ycrcb);
	cvtColor(ycrcb, result, COLOR_YCrCb2BGR);
	imshow("equalizeHist", result);




	waitKey(0);
	return 0;
}

三、输出结果

四、代码思路

(1)灰度

1、读入图片
2、显示源图
3、显示色彩空间转换后的灰度图
4、显示直方图均衡化后的图片

(2)色彩空间转换

1、读入图片
2、色彩空间转换Ycrcb
3、图像通道分离
4、图像直方图均衡化
5、通道合并
6、色彩空间转换BGR
7、显示图像直方图均衡化后的图像

这篇博客我们就学习了 图像直方图均衡化 。

加油吧 阿超没有蛀牙!

你可能感兴趣的