图像直方图均衡化 c++
时间: 2023-07-23 17:58:55 浏览: 106
在C++中实现图像直方图均衡化的方法如下:
```cpp
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main() {
// 读取图像
Mat image = imread("input.jpg", IMREAD_GRAYSCALE);
if (image.empty()) {
cout << "无法读取图像" << endl;
return -1;
}
// 计算直方图
Mat hist;
int histSize = 256;
float range[] = {0, 256};
const float* histRange = {range};
calcHist(&image, 1, nullptr, Mat(), hist, 1, &histSize, &histRange);
// 直方图均衡化
Mat equalizedImage;
equalizeHist(image, equalizedImage);
// 显示原始图像和均衡化后的图像
namedWindow("Original Image", WINDOW_NORMAL);
namedWindow("Equalized Image", WINDOW_NORMAL);
imshow("Original Image", image);
imshow("Equalized Image", equalizedImage);
waitKey(0);
return 0;
}
```
上述代码使用OpenCV库实现了图像直方图均衡化。首先,通过`imread`函数读取输入图像(假设为灰度图像)。然后,使用`calcHist`函数计算图像的直方图。接下来,使用`equalizeHist`函数对图像进行直方图均衡化。最后,使用`imshow`函数显示原始图像和均衡化后的图像。
请将代码中的`input.jpg`替换为你要处理的图像文件路径,并确保你安装了OpenCV库并进行了正确的配置。
阅读全文