OpenCV 中的 equalizeHist() 函式是什麼?


影像的直方圖表明畫素強度值的頻率。在影像直方圖中,X 軸表明灰度強度,而 Y 軸表明這些強度的頻率。

直方圖均衡化為了拉伸強度範圍,提高了影像對比度。你可以使用equalizeHist() 函式對給定影像的直方圖進行均衡化。

此函式的基本語法為 -

語法

equalizeHist(Source Matrix, Destination Matrix).

在這個程式中,它對灰度影像進行了均衡化。這意味著僅有一個通道。此函式對該通道的畫素值進行了均衡化。然而,當我們將此函式應用於彩色影像時,我們必須定義源矩陣和目標矩陣以外的不同通道。在以下程式中,我們將在彩色影像中瞭解 equalizehist() 的應用。

以下程式演示了 OpenCV 中的equalizeHist()函式。

示例

#include<iostream>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
using namespace cv;
using namespace std;
int main(int argc, const char** argv) {
   Mat original;//Declaring a matrix//
   original = imread("sky.jpg");//loading image//
   vectorchannels;//vector to store each channel in different array//
   Mat hist;//Declaring a matrix//
   cvtColor(original, hist, COLOR_BGR2YCrCb);//Converting from BGR to YCrCB//
   split(hist, channels);//splitting channels//
   equalizeHist(channels[2], channels[2]);//applying histogram equalizer in 2nd channel//
   Mat histeql;//Declaring a matrix//
   merge(channels, hist);//merging equalized channel with actual matrix//
   cvtColor(hist, histeql, COLOR_YCrCb2BGR);//Reconverting to BGR//
   namedWindow("original");//window to show original image//
   namedWindow("hist");//window to show edited image//
   imshow("original", original);//showing original image//
   imshow("hist", histeql);//showing edited image//
   waitKey(0);//wait for keystroke//
   return 0;
}

輸出

更新時間: 2021-03-10

1 千次瀏覽

啟動您的 職業生涯

透過完成本課程獲得認證

開始
廣告
© . All rights reserved.