我正在将 Kinect 中的深度数据转换为图像(Bgr565 格式)。当我使用标准 for 循环遍历深度像素数组(将它们映射到颜色)时,我得到了一个很好的平滑图像。但是当我使用 Parallel.For 时,我得到一个闪烁的图像。
这是代码部分。任何帮助将不胜感激:
// === Single-threaded depth to color conversion ===
for (int i = 0; i < depthPixelsArray.Length; ++i)
{
depth = (short)(depthPixelsArray[i] >> DepthImageFrame.PlayerIndexBitmaskWidth);
if (depth >= colorBoundary)
unchecked { colorPixelsArray[i] = (short)0xF800; }
else colorPixelsArray[i] = depth;
}
// === Multi-threaded depth to color conversion ===
Parallel.For (0, depthPixelsArray.Length, delegate(int i)
{
depth = (short)(depthPixelsArray[i] >> DepthImageFrame.PlayerIndexBitmaskWidth);
if (depth >= colorBoundary)
unchecked { colorPixelsArray[i] = (short)0xF800; }
else colorPixelsArray[i] = depth;
}
);