别人的代码:
#include<opencv.hpp>
#include<iostream>
using namespace std;
using namespace cv;
int main() {
Mat src = imread("F://download//第三章图片//下载的图片//08f790529822720eeff980167ecb0a46f21fab23.jpg");
imshow("src", src);
Mat gray, dst;
cvtColor(src, gray, COLOR_BGR2GRAY);//将原图src转化为黑白图,如果imread读入的是黑白图,则该操作可以忽略
imshow("gray", gray);//显示转化后的黑白图
equalizeHist(gray, dst);//直方图均衡化函数;
imshow("dst", dst);
waitKey(0);
}
1. 直方图均衡化通常用来增加许多图像的局部对比度,尤其是当图像的有用数据的对比度相当接近的时候。
通过这种方法,亮度可以更好地在直方图上分布。这样就可以用于增强局部的对比度而不影响整体的对比度,直方图均衡化通过有效地扩展常用的亮度来实现这种功能。
直方图的均衡化的是将一幅图像的直方图变平,使各个灰度级的趋于均匀分布,这样能够很好的增强图像对比度。直方图均衡化是一种自动化的变换,仅需要输入图像,就能够确定图像的变换函数。但是直方图的均衡化操作也有一定的确定,在均衡化的过程中对图像中的数据不加选择,这样有可能会增强图像的背景;变换后图像的灰度级减少,有可能造成某些细节的消失;会压缩图像直方图中的高峰,造成处理后图像对比度的不自然等。
效果: