此代码有什么问题?我已经完全按原样复制了一本书中的代码,不幸的是它无法正常工作。我得到了这个例外,我不知道如何解决它。该行例外
KinectSensor sensor = KinectSensor.KinectSensors[0];
例外情况是:指数超出范围。必须是非负数且小于集合的大小。
这是完整的代码:
using Microsoft.Kinect;
namespace ConsoleApplication4
{
internal class Program
{
private static void Main(string[] args)
{
try
{
KinectSensor sensor = KinectSensor.KinectSensors[0];
sensor.DepthStream.Enable();
sensor.DepthFrameReady += sensor_DepthFrameReady;
// make it look like The Matrix
Console.ForegroundColor = ConsoleColor.Green;
// start the data streaming
sensor.Start();
while (Console.ReadKey().Key != ConsoleKey.Spacebar)
{
}
}
catch (Exception)
{
throw;
}
}
private static void sensor_DepthFrameReady(object sender, DepthImageFrameReadyEventArgs e)
{
using (var depthFrame = e.OpenDepthImageFrame())
{
if (depthFrame == null)
return;
short[] bits = new short[depthFrame.PixelDataLength];
depthFrame.CopyPixelDataTo(bits);
foreach (var bit in bits)
Console.Write(bit);
}
}
}
}
答案 0 :(得分:1)
鉴于错误来自行
KinectSensor sensor = KinectSensor.KinectSensors[0];
这是可用的Kinect传感器的枚举,并且错误表明位置0
为空,我猜你的电脑或代码无法找到Kinect传感器。
如果你在那里放置一个断点并检查我投注的传感器阵列,你会发现它是空的。
建议: