opencv 直方图规定化 c++
时间: 2024-07-31 16:01:17 浏览: 66
OpenCV是一个开源计算机视觉库,它提供了一套丰富的功能来处理图像和视频数据。直方图规定化(Histogram Normalization or Histogram Equalization)是一种常见的图像处理技术,用于改善图像对比度,使得图像的整体亮度分布更均匀。
在C++中使用OpenCV进行直方图规定化的步骤通常包括以下几个部分:
1. **读取图像**:首先通过`cv::imread()`函数加载图像。
```cpp
cv::Mat image = cv::imread("input.jpg");
```
2. **计算原图像的直方图**:利用`cv::calcHist()`函数对图像的每个像素通道(如RGB)进行统计。
```cpp
std::vector<cv::Mat> channels;
cv::split(image, channels);
cv::Mat hist;
cv::calcHist(&channels, 1, nullptr, hist, {256}, cv::Scalar(0), cv::Scalar(256));
```
3. **规定化处理**:使用`cv::equalizeHist()`函数对直方图进行规定化操作,这会调整图像的整体亮度范围,使之更均衡。
```cpp
cv::Mat equalized;
cv::equalizeHist(channels, equalized);
cv::merge(channels, equalized); // 将各个通道合并回彩色图像
```
4. **显示结果**:最后可以使用`cv::imshow()`函数展示处理后的图像。
```cpp
cv::imshow("Original", image);
cv::imshow("Equalized", equalized);
cv::waitKey(0);
```
阅读全文