【发布时间】:2013-09-18 10:22:45
【问题描述】:
我正在从场景中提取深度信息,我想将点的 X、Y、Z 位置写入文件。
using (DepthImageFrame depthFrame = e.OpenDepthImageFrame())
{
if (depthFrame != null)
{
frameWidth = depthFrame.Width;
frameHeight = depthFrame.Height;
depthFrame.CopyDepthImagePixelDataTo(this.depthPixels); //Per essere visualizzati nella finestra
depthFrame.CopyPixelDataTo(this.shortDepth); //Per essere scritti nel file
mapper.MapDepthFrameToSkeletonFrame(DepthImageFormat.Resolution640x480Fps30, depthPixels, this.realPoints);
minDepth = depthFrame.MinDepth;
maxDepth = depthFrame.MaxDepth;
colorizer.ConvertDepthFrame(this.depthPixels, minDepth, maxDepth, this.depthTreatment, this.depthFrame32);
this.writableBitmap.WritePixels(
new Int32Rect(0, 0, frameWidth, frameHeight),
this.depthFrame32,
frameWidth * Bgr32BytesPerPixel,
0);
this.kinectDepthImage.Source = this.writableBitmap;
if (this.record)
{
using (StreamWriter writer = new StreamWriter(File.Open(mypath,FileMode.Append)))
{
writer.Write(realPoints);
writer.WriteLine();
}
}
}
}
现在我想用这种方式写一个 SkeletonPoint 变量(realPoints)到文件中:
- 第一行中的所有实点 X
- 第二行中的所有实点 Y
- 第三行中的所有实点 Z
所以我将有三行,每帧包含 (640*480) 个元素。
我的问题:
- 我怎样才能这样写数据?
- Stream Writer 的效率是否足以以 30 fps 的速度工作?
【问题讨论】:
-
您阅读过哪些关于将数据写入文件的教程和文档?这是非常基本的东西。至于StreamWriter,设置一个足够大的缓冲区大小,试试看。
-
感谢您的回答。我找到了一种访问 X、Y 和 Z 的方法,但 StreamWriter 无法以 30 fps 的速度写入所有这些数据量。