none
kinect初学者求助,irReader_FrameArrived这个函数为什么没被执行呢? RRS feed

  • 问题

  • 请大家给予帮助,谢谢啦!

    按照官方视频中一步一步地敲的代码,是不是有了“ irReader.FrameArrived += irReader_FrameArrived;”这个代码“ irReader_FrameArrived”函数就应该被自动执行呢?为什么我在“ irReader_FrameArrived”函数中设置断点,却执行不到呢?自然执行时也就没有看到视频教程中的效果,没有图像。x-box的灯也没有亮,而我打开“kinect v2 configuration verifier”时,xbox的灯会亮的。

     public MainPage()
            {
                this.InitializeComponent();
                this.Loaded += MainPage_Loaded;
            }
            KinectSensor sensor;
            InfraredFrameReader irReader;
            ushort[] irData;
            byte[] irDataConverted;
            WriteableBitmap irBitmap; 
            private void MainPage_Loaded(object sender, RoutedEventArgs e)
            {
                sensor = KinectSensor.GetDefault();
                irReader = sensor.InfraredFrameSource.OpenReader();
                FrameDescription fd = sensor.InfraredFrameSource.FrameDescription;
                irData = new ushort[fd.LengthInPixels];
                irDataConverted = new byte[fd.LengthInPixels * 4];
                irBitmap = new WriteableBitmap(fd.Width,fd.Height);
                image111.Source = irBitmap;
                sensor.Open();

                irReader.FrameArrived += irReader_FrameArrived;
            }

      private void irReader_FrameArrived(InfraredFrameReader sender, InfraredFrameArrivedEventArgs args)
            {
                using (InfraredFrame irFrame = args.FrameReference.AcquireFrame())
                //InfraredFrame irFrame = args.FrameReference.AcquireFrame();
                {
                    if (irFrame != null)
                    {
                        irFrame.CopyFrameDataToArray(irData);
                        for (int i = 0; i < irData.Length; i++)
                        {
                            byte intensity = (byte)(irData[i] >> 8);
                            irDataConverted[i * 4] = intensity;
                            irDataConverted[i * 4+1] = intensity;
                            irDataConverted[i * 4+2] = intensity;
                            irDataConverted[i * 4+3] = 255;
                        }
                        irDataConverted.CopyTo((Array)irBitmap.PixelBuffer,0);
                        //irDataConverted.CopyTo((Array)irBitmap.PixelBuffer,111111);
                        irBitmap.Invalidate();
                        
                    }
                }

            }

    2016年5月26日 7:41