次のコードで入れ子になった Parallel.For ループを使用して、kinect 深度データをテキスト ファイルに書き込もうとしています。しかし、それは与えIndexOutofRangeException
ます。
640x480
単純な for ループを使用する場合、コードは完璧に機能しますが、深さの形式が に設定されているため、ループが307200 lines
テキスト ファイルに書き込まれるため、UI がハングします30fps
。
そのため、パラレルに切り替えました。スキーム用。ネストされたループから writeLine コマンドを省略した場合、コードは正常に動作します。これはIndexOutofRangeException
、writeline コマンドでエラーが発生していることを示しています。これをトラブルシューティングする方法がわかりません。お知らせ下さい。
UI のフリーズを回避するためのより良い回避策はありますか?
ありがとう。
using (DepthImageFrame depthImageframe = d.OpenDepthImageFrame())
{
if (depthImageframe == null)
return;
depthImageframe.CopyPixelDataTo(depthPixelData);
swDepth = new StreamWriter(@"E:\depthData.txt", false);
int i = 0;
Parallel.For(0, depthImageframe.Width, delegate(int x)
{
Parallel.For(0, depthImageframe.Height, delegate(int y)
{
p[i] = sensor.MapDepthToSkeletonPoint(depthImageframe.Format,
x, y, depthPixelData[x + depthImageframe.Width * y]);
swDepth.WriteLine(i + "," + p[k].X + "," + p[k].Y + "," + p[k].Z);
i++;
});
});
swDepth.Close();
}
}