Я создаю 16-битное изображение в градациях серого и сохраняю его в формате PNG, используя C #. Когда я загружаю изображение, используя GIMP или OpenCV, изображение появляется с точностью 8 бит вместо 16 бит. Вы знаете, что не так с моим кодом?
1) Этот код используется для создания PNG
public static void Create16BitGrayscaleImage(int imageWidthInPixels, int imageHeightInPixels, ushort[,] colours,
string imageFilePath)
{
// Multiplying by 2 because it has two bytes per pixel
ushort[] pixelData = new ushort[imageWidthInPixels * imageHeightInPixels * 2];
for (int y = 0; y < imageHeightInPixels; ++y)
{
for (int x = 0; x < imageWidthInPixels; ++x)
{
int index = y * imageWidthInPixels + x;
pixelData[index] = colours[x, y];
}
}
BitmapSource bmpSource = BitmapSource.Create(imageWidthInPixels, imageHeightInPixels, 86, 86,
PixelFormats.Gray16, null, pixelData, imageWidthInPixels * 2);
using (Stream str = new FileStream(imageFilePath, FileMode.Create))
{
PngBitmapEncoder enc = new PngBitmapEncoder();
enc.Frames.Add(BitmapFrame.Create(bmpSource));
enc.Save(str);
}
}
2) Это код Python для чтения свойств изображения:
import cv2
img = cv2.imread(image_path)