Я использую Accord.Video.ffmpeg для записи видео на C #. На самом деле это видео глубины с пикселями, указывающими величину глубины. Из массива глубины я создаю растровое изображение и сохраняю его с помощью метода WriteVideoFrame.
После этого я открываю видео в Matlab, считывая кадр за кадром. Проблема в том, что у меня есть различия между растровым изображением в С # и фреймом в Matlab ?! Разница составляет более или менее 10 (в диапазоне 255 это большое дело) (на данный момент тестируется, является ли она постоянной).
Поскольку от растрового изображения до видеокадра я не выполняю никаких операций, я думаю, что проблема в в видеокодере. Возможно ли, даже если формат RAW ?!
Подсказки?
Alex
ОБНОВЛЕНИЕ
Если я запустил этот код в новом проекте, все в порядке
unsafe private void Button_Click_1(object sender, RoutedEventArgs e)
{
writerdepth.Open("testvideo.avi", 512, 424, 15, VideoCodec.Raw);
for (int i = 0; i <depthPixels.Length; i++)
{
this.depthPixels[i] = (byte)100;
}
try
{
fixed (byte* p = depthPixels)
{
IntPtr unmanagedPointer = (IntPtr)p;
depthbm = new Bitmap(512, 424, 512, System.Drawing.Imaging.PixelFormat.Format8bppIndexed, unmanagedPointer);
}
}
catch (Exception ex)
{
Debug.WriteLine("Errore");
}
writerdepth.WriteVideoFrame(depthbm);
writerdepth.Close();
}
}
возвращаясь к моему коду, когда я пытаюсь прочитать изображение вместо RGB = [100 100 100] У меня есть [96 94 99].
Мой начальный код сохраняет изображение глубины из kinect v2, функция вызывается при новом поступает действительный фрейм.
Я понятия не имею о причине этой разницы ...