如何在此代码中修复此异常?

时间:2014-06-11 11:08:05

标签: c# kinect

此代码有什么问题?我已经完全按原样复制了一本书中的代码,不幸的是它无法正常工作。我得到了这个例外,我不知道如何解决它。该行例外

 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);
            }
        }
    }
}

1 个答案:

答案 0 :(得分:1)

鉴于错误来自行

 KinectSensor sensor = KinectSensor.KinectSensors[0];

这是可用的Kinect传感器的枚举,并且错误表明位置0为空,我猜你的电脑或代码无法找到Kinect传感器。

如果你在那里放置一个断点并检查我投注的传感器阵列,你会发现它是空的。

建议:

  • 您是否已连接传感器
  • 可以在设备管理器中找到
  • 安装了驱动程序??
  • 试着把它关掉再打开? :)
  • 多喝咖啡
  • 用锤子解决。