Я пишу простой .exe-файл для своей камеры basler aca2440-75um. Чтобы проверить это, я установил выдержку 10 мс и усиление 0. Я сделал 10 изображений с моим кодом и 10 изображений с помощью pylon (приложение Basler). Полученные изображения разные. Превышение 0 значений оттенков серого в одном изображении почти такое же, как превышение значений 1 и 2 в другом.
Подозреваю, что проблема должна быть здесь:
Я пишу простой .exe-файл для своей камеры basler aca2440-75um. Чтобы проверить это, я установил выдержку 10 мс и усиление 0. Я сделал 10 изображений с моим кодом и 10 изображений с помощью pylon (приложение Basler). Полученные изображения разные. Превышение 0 значений оттенков серого в одном изображении почти такое же, как превышение значений 1 и 2 в другом. Подозреваю, что проблема должна быть здесь: [code] int w = grabResult.Width, h = grabResult.Height; try { var converter = new PixelDataConverter { OutputPixelFormat = PixelType.Mono16 }; byte[] buffer16LE = new byte[w * h * 2]; converter.Convert(buffer16LE, grabResult);
if (msbAligned) { for (int i = 0; i < mono12.Length; i++) mono12[i] = (ushort)((mono12[i] >> 4) & 0x0FFF); } else { for (int i = 0; i < mono12.Length; i++) mono12[i] &= 0x0FFF; // Ensure bits 12-15 are zero }
var encoder = new TiffBitmapEncoder { Compression = TiffCompressOption.None }; encoder.Frames.Add(BitmapFrame.Create(source));
var dir = Path.GetDirectoryName(path); if (string.IsNullOrEmpty(dir)) dir = "."; Directory.CreateDirectory(dir);
using (var fs = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.None)) { encoder.Save(fs); fs.Flush(); } } catch (Exception ex) { Console.WriteLine($"[ERROR] Failed to save TIFF: {ex.Message}"); throw; } } [/code] Попытка: выполнить декодирование mono12 с помощью LSB (https://www.emva.org/wp-content/uploads/GenICam_PFNC_2_1.pdf) Ожидание: получить такое же изображение, как если бы я сохранял его с помощью приложения Basler