나는 Simple C# Wrapper for the AviFile Library을 사용 중이며 코드 조각은 here이며 Kinect의 색상 프레임에서 avi 파일을 생성합니다. "AVIFileOpen에서 예외 : -2147205009은"비트 맵에서 avi 예외
와 나는이 예외를 얻을 "_firstBitmap는"
Bitmap ImageToBitmap(ColorImageFrame Image)
{
byte[] pixeldata = new byte[Image.PixelDataLength];
Image.CopyPixelDataTo(pixeldata);
Bitmap bmap = new Bitmap(Image.Width, Image.Height, PixelFormat.Format32bppRgb);
BitmapData bmapdata = bmap.LockBits(
new Rectangle(0, 0, Image.Width, Image.Height),
ImageLockMode.WriteOnly,
bmap.PixelFormat);
IntPtr ptr = bmapdata.Scan0;
Marshal.Copy(pixeldata, 0, ptr, Image.PixelDataLength);
bmap.UnlockBits(bmapdata);
return bmap;
}
위에서 언급 한 function 그리고 컬러 프레임 이미지 생성됩니다
aviManager = new AviManager(@"C:\temp\temp.avi", false);
aviStream = aviManager.AddVideoStream(false, 30, _firstBitmap);
입니다 Kinect SDK의 ColorFrameReady 대리인에서 제공
private void SensorColorFrameReady(object sender, ColorImageFrameReadyEventArgs e)
{
using (ColorImageFrame colorFrame = e.OpenColorImageFrame())
{
if (colorFrame != null)
{
// Copy the pixel data from the image to a temporary array
colorFrame.CopyPixelDataTo(this.colorPixels);
// Write the pixel data into our bitmap
this.colorBitmap.WritePixels(
new Int32Rect(0, 0, this.colorBitmap.PixelWidth, this.colorBitmap.PixelHeight),
this.colorPixels,
this.colorBitmap.PixelWidth * sizeof(int),
0);
AviManager aviManager = new AviManager(@"C:\temp\temp.avi", false);
VideoStream aviStream = aviManager.AddVideoStream(false, 30, bmp);
Bitmap bitmap = ImageToBitmap(colorFrame);
aviStream.AddFrame(bitmap);
bitmap.Dispose();
aviManager.Close();
}
}
}
고마워요!
'_firstBitmap'이란 무엇입니까? 모든 변수를 초기화하고 선언하는 코드를 포함하십시오. –
_firstBitmap은 System.Drawing.Bitmap이며 위 링크에서 언급 한 ImageToBitmap 함수의 결과입니다. –
오류는'AVIERR_FILEOPEN'입니다. 왜이 오류가 발생했는지 알기 위해서는'AVIFileOpen' 인수를 봐야합니다. –