如何在 OpenCV 中使用 C++ 应用直方图均衡化?
直方图表示图像的深度强度。例如,考虑一个颜色深度为 8 位的图像。这意味着每个像素的颜色深度可以从 0 到 意味着从 0 到 255。如果图像是 RGB 图像,则它具有红色、绿色和蓝色通道。例如,在图像的某一点,只有红色。那么该图像的颜色深度位于红色通道中,像素值将从 0 变化到 255。0 表示没有红色,255 表示更多红色。
直方图显示了所有通道和所有颜色的此类结果。通过更改像素的值,您可以更改某些特定颜色像素的强度。例如,如果您想增加红色通道的密度,您可以更改红色通道的值。
首先,我们将在灰度图像中应用直方图均衡化。灰度图像仅包含黑色和白色。这意味着只有一个通道。该图像是 8 位图像。这意味着颜色深度从 0 到 255 不等。0 表示白色,255 表示黑色。在下面的代码中,我们将加载彩色图像并将其转换为灰度图像。然后,我们将使用 OpenCV 的“equalizeHist”函数来均衡像素值。
以下程序展示了如何在 OpenCV 中应用直方图均衡化。
示例
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
using namespace cv;
using namespace std;
int main() {
Mat original;//Declaring a matrix//
original = imread("view.jpg");//loading the image
Mat gray;//declaring a matrix//
cvtColor(original, gray, COLOR_BGR2GRAY);//converting to grayscale//
Mat hist;//declaring a matrix//
equalizeHist(gray, hist);//applying histogram equalizer
namedWindow("Original");//window for actual image//
namedWindow("gray");//window for grayscale image//
namedWindow("histogram");//window for histogram//
imshow("Original", original);//showing actual image//
imshow("gray", gray);//showing grayscale image//
imshow("histogram", hist);//showing histogram effect
waitKey(0);//wait for keystroke//
return(0);
}输出

广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP