Go back to Richel Bilderbeek's homepage.

Go back to Richel Bilderbeek's C++ page.

 

 

 

(C++) GetImageHistogram

 

Graphics code snippet to get a histogram of a VCL TImage its color values.

 

* View the code of 'GetImageHistogram' in plain text

 

 

//From htpp://www.richelbilderbeek.nl/CppGetImageHistogram.htm

const std::vector<int> GetImageHistogram(const TImage * const image)

{

assert(image!=0 && "Image is NULL");

assert(image->Picture->Bitmap!=0 && "Image bitmap is NULL");

assert(image->Picture->Bitmap->PixelFormat == pf24bit && "Image bitmap must be 24 bit");

//Get the width and height from the source

const int width = image->Picture->Bitmap->Width;

const int height = image->Picture->Bitmap->Height;

 

std::vector<int> histogram(256,0); //There are 256 different color values

 

for (int y=0; y!=height; ++y)

{

const unsigned char * line

= static_cast<const unsigned char *>(

image->Picture->Bitmap->ScanLine[y]);

for (int x=0; x!=width; ++x)

{

const int grey

= (line[x*3+0] + line[x*3+1] + line[x*3+2]) / 3;

++histogram[grey];

}

}

return histogram;

}

 

 

 

 

Go back to Richel Bilderbeek's C++ page.

Go back to Richel Bilderbeek's homepage.