0
我正在使用Accord.Video.ffmpeg在c#中錄製視頻。它實際上是一個深度視頻,其像素表示深度的大小。從深度數組中,我創建一個位圖並用WriteVideoFrame方法保存位圖。
之後,我在Matlab中逐幀打開視頻。問題是我在C#中的位圖和Matlab中的框架有區別?!差異大致是10(在255的範圍內,這是一個大問題)(現在測試,如果它是恆定的)。
由於從位圖到videoframe我不執行任何操作,我認爲問題出在視頻編碼器。即使格式是原始格式,是可能的嗎?!
提示?
亞歷
UPDATEWriteVideoFrame()with Videocodec.Raw更改像素值
如果我運行在一個新的項目一切這段代碼是罰款
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保存深度圖像,當新的有效幀到達時調用該函數。
我沒有對這種差異的原因想法...