From 9fab7231cc5a2ed31f2e78f16263d26b094e6ea4 Mon Sep 17 00:00:00 2001 From: bsdnoobz Date: Tue, 4 Dec 2012 20:47:51 +0700 Subject: improve display-histogram.cpp --- display-histogram.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/display-histogram.cpp b/display-histogram.cpp index c4295e9..17f5a14 100644 --- a/display-histogram.cpp +++ b/display-histogram.cpp @@ -1,3 +1,6 @@ +/** + * Code sample for displaying image histogram in OpenCV. + */ #include #include #include @@ -9,11 +12,14 @@ void showHistogram(Mat& img) { int bins = 256; // number of bins int nc = img.channels(); // number of channels - vector hist(nc); + vector hist(nc); // histogram arrays + + // Initalize histogram arrays for (int i = 0; i < hist.size(); i++) hist[i] = Mat::zeros(1, bins, CV_32SC1); + // Calculate the histogram of the image for (int i = 0; i < img.rows; i++) { for (int j = 0; j < img.cols; j++) @@ -26,6 +32,8 @@ void showHistogram(Mat& img) } } + // For each histogram arrays, obtain the maximum (peak) value + // Needed to normalize the display later int hmax[3] = {0,0,0}; for (int i = 0; i < nc; i++) { @@ -38,6 +46,7 @@ void showHistogram(Mat& img) vector canvas(nc); + // Display each histogram in a canvas for (int i = 0; i < nc; i++) { canvas[i] = Mat::ones(125, bins, CV_8UC3); @@ -57,18 +66,15 @@ void showHistogram(Mat& img) } } +// Test the `showHistogram()` function above int main() { Mat src = imread("c:/users/nash/desktop/assets/lena.jpg"); - if (src.empty()) return -1; - showHistogram(src); - imshow("src", src); waitKey(0); - return 0; } -- cgit v1.2.3