opencv+c++彩色图像直方图均衡化
时间: 2023-07-01 12:08:10 浏览: 111
彩色图像直方图均衡化是一种常用的图像增强技术,可以增强图像的对比度和清晰度。下面是使用OpenCV和C++实现彩色图像直方图均衡化的代码示例:
```cpp
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
// 读取彩色图像
Mat image = imread("test.jpg", IMREAD_COLOR);
if (image.empty())
{
cout << "读取图像失败!" << endl;
return -1;
}
// 将彩色图像转为YCrCb颜色空间
Mat ycrcb;
cvtColor(image, ycrcb, COLOR_BGR2YCrCb);
// 分离YCrCb三个通道
vector<Mat> channels;
split(ycrcb, channels);
// 对亮度通道进行直方图均衡化
equalizeHist(channels[0], channels[0]);
// 合并三个通道
merge(channels, ycrcb);
// 将YCrCb颜色空间转为BGR颜色空间
Mat result;
cvtColor(ycrcb, result, COLOR_YCrCb2BGR);
// 显示原始图像和直方图均衡化后的图像
namedWindow("Original Image", WINDOW_AUTOSIZE);
imshow("Original Image", image);
namedWindow("Equalized Image", WINDOW_AUTOSIZE);
imshow("Equalized Image", result);
waitKey(0);
return 0;
}
```
以上代码中,首先读取彩色图像,然后将图像转为YCrCb颜色空间,并分离出三个通道。接着对亮度通道进行直方图均衡化,再将三个通道合并,并将YCrCb颜色空间转为BGR颜色空间。最后显示原始图像和直方图均衡化后的图像。