如何在 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