请大家给予帮助,谢谢啦!
按照官方视频中一步一步地敲的代码,是不是有了“ 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();
}
}
}