opencv 对彩色图进行亮度矫正使亮度较为平均c++代码
时间: 2023-07-09 18:40:33 浏览: 138
以下是使用 OpenCV 进行彩色图像亮度矫正的 C++ 代码示例:
```c++
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
// 加载彩色图像
Mat image = imread("input.jpg");
// 将彩色图像转换为 YCrCb 颜色空间
Mat ycrcb_image;
cvtColor(image, ycrcb_image, COLOR_BGR2YCrCb);
// 分离出亮度信道
std::vector<Mat> ycrcb_channels;
split(ycrcb_image, ycrcb_channels);
Mat y_channel = ycrcb_channels[0];
// 对亮度信道进行直方图均衡化
equalizeHist(y_channel, y_channel);
// 将处理后的亮度信道和原图像的色度信道合并
merge(ycrcb_channels, ycrcb_image);
// 将 YCrCb 颜色空间转换回 BGR 颜色空间
Mat result_image;
cvtColor(ycrcb_image, result_image, COLOR_YCrCb2BGR);
// 显示结果图像
imshow("Input Image", image);
imshow("Output Image", result_image);
waitKey(0);
return 0;
}
```
在上述代码中,我们首先加载了一个彩色图像,然后将它转换为 YCrCb 颜色空间,并分离出亮度信道。接着,我们对亮度信道进行直方图均衡化,再将处理后的亮度信道和原图像的色度信道合并,最后将 YCrCb 颜色空间转换回 BGR 颜色空间得到最终的结果图像。
阅读全文