Copying a 14bit grayscale image (saved in long[]) to a pictureBox
- by Itsik
My camera gives me 14bit grayscale images, but the API's function returns a long* to the image data. (so i'm assuming 4 bytes for each pixel)
My application is written in C++/CLI, and the pictureBox is of .NET type.
I am currently using the BitmapData.LockBits() mechanism to gain pointer access to the image data, and using
memcpy(bmpData.Scan0.ToPointer(), imageData, sizeof(long)*height*width)
to copy the image data to the Bitmap.
For now, the only PixelFormat that is working is 32bit RGB, and the image appears in shades of blue with contours.
Trying to initialize the Bitmap as 16bppGrayscale isn't working.
I would ideally want to cast the array from long to word and using a 16bit format (hoping the the 14bit data will be displayed properly) but I'm not sure if this works.
Also, I don't want to iterate over the image data, so finding the min/max and then histogram stretching to [0..255] isnt an option for me (the display must be as efficient as possible)
Thanks