Skip to content

Latest commit

 

History

History
50 lines (29 loc) · 4.79 KB

File metadata and controls

50 lines (29 loc) · 4.79 KB

 

 

 

 

 

 

ConvertToGrey is a graphics code snippet to convert a color VCL TImage to a grey TImage.

 

In the 'ConvertToGrey' example image you see an original color image, this image converted to grey and the result of a histogram equalization on the grey image.

 

 


//From http://www.richelbilderbeek.nl/CppConvertToGrey.htm void ConvertToGrey(const TImage * const source, TImage * const target) {   assert(source!=0 && "Source image is NULL");   assert(target!=0 && "Target image is NULL");   assert(source->Picture->Bitmap!=0 && "Source bitmap is NULL");   assert(target->Picture->Bitmap!=0 && "Target bitmap is NULL");   assert(source->Picture->Bitmap->PixelFormat == pf24bit && "Source bitmap must be 24 bit");   assert(target->Picture->Bitmap->PixelFormat == pf24bit && "Target bitmap must be 24 bit");   //Get the width and height from the source   const int width  = source->Picture->Bitmap->Width;   const int height = source->Picture->Bitmap->Height;   //Set the target's width and height   target->Picture->Bitmap->Width  = width;   target->Picture->Bitmap->Height = height;   for (int y=0; y!=height; ++y)   {     const unsigned char * lineSource       = static_cast<const unsigned char *>(         source->Picture->Bitmap->ScanLine[y]);     unsigned char * lineTarget       = static_cast<unsigned char *>(         target->Picture->Bitmap->ScanLine[y]);     for (int x=0; x!=width; ++x)     {       const int grey         = (lineSource[x*3+0] + lineSource[x*3+1] + lineSource[x*3+2]) / 3;       lineTarget[x*3+0]=grey; //Blue       lineTarget[x*3+1]=grey; //Green       lineTarget[x*3+2]=grey; //Red     }   } }