如何在 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);
}

輸出

更新於: 2021年3月10日

498 次瀏覽

啟動您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.