无法使用 Kinect SDK 示例中的 'Gesture Detection using Kinect'
Unable to use the 'Gesture Detection using Kinect' from the Kinect SDK samples
我正在使用手势检测来检测手势,该手势会触发方法调用以保存图像。下面是 MainWindow 的 C# 代码,它使用 Kinect SDK 示例中的 类 作为 GestureDetect
和 GestureResult
。我想要做的是从 GestureDetect
.
获取 result
的更新值
public MainWindow()
{
kinectSensor = KinectSensor.GetDefault();
this.kinectSensor.IsAvailableChanged += this.Sensor_IsAvailableChanged;
Application.Current.MainWindow.WindowState = WindowState.Maximized;
kinectSensor.Open();
this.StatusText = this.kinectSensor.IsAvailable ? Properties.Resources.RunningStatusText
: Properties.Resources.NoSensorStatusText;
this.bodyFrameReader = this.kinectSensor.BodyFrameSource.OpenReader();
this.choice = new List<bool>();
this.bodyFrameReader.FrameArrived += this.Reader_BodyFrameArrived;
_backgroundRemovalTool = new BackgroundRemovalTool(kinectSensor.CoordinateMapper);
_reader = kinectSensor.OpenMultiSourceFrameReader(FrameSourceTypes.Color | FrameSourceTypes.Depth | FrameSourceTypes.BodyIndex);
_reader.MultiSourceFrameArrived += Reader_MultiSourceFrameArrived;
this.gestureDetectorList = new List<GestureDetect>();
InitializeComponent();
//GestureDetect detector = new GestureDetect(this.kinectSensor);
// 2) Initialize the background removal tool.
int maxBodies = this.kinectSensor.BodyFrameSource.BodyCount;
for (int i = 0; i < maxBodies; ++i)
{
GestureResult result = new GestureResult(i, false, false, 0.0f);
GestureDetect detector = new GestureDetect(this.kinectSensor, result);
this.gestureDetectorList.Add(detector);
this.bodyFrameReader.FrameArrived += this.Reader_BodyFrameArrived;
choice.Add(result.detected);
}
}
choice[i]
的值保持为 false,gestureDetectorList[i].result
对 body 为 null。我哪里错了?
好吧,我还是不知道哪里出错了。我所做的是通过创建方法来从“GestureDetect”函数中更新 MainWindow
中的标志并使用这些标志调用我的 'Capture' 方法来解决这个问题。
所以这是一个可能的解决方法。如果有人能告诉我我要去哪里,虽然我真的很感激,因为我想不通。
谢谢。
我正在使用手势检测来检测手势,该手势会触发方法调用以保存图像。下面是 MainWindow 的 C# 代码,它使用 Kinect SDK 示例中的 类 作为 GestureDetect
和 GestureResult
。我想要做的是从 GestureDetect
.
result
的更新值
public MainWindow()
{
kinectSensor = KinectSensor.GetDefault();
this.kinectSensor.IsAvailableChanged += this.Sensor_IsAvailableChanged;
Application.Current.MainWindow.WindowState = WindowState.Maximized;
kinectSensor.Open();
this.StatusText = this.kinectSensor.IsAvailable ? Properties.Resources.RunningStatusText
: Properties.Resources.NoSensorStatusText;
this.bodyFrameReader = this.kinectSensor.BodyFrameSource.OpenReader();
this.choice = new List<bool>();
this.bodyFrameReader.FrameArrived += this.Reader_BodyFrameArrived;
_backgroundRemovalTool = new BackgroundRemovalTool(kinectSensor.CoordinateMapper);
_reader = kinectSensor.OpenMultiSourceFrameReader(FrameSourceTypes.Color | FrameSourceTypes.Depth | FrameSourceTypes.BodyIndex);
_reader.MultiSourceFrameArrived += Reader_MultiSourceFrameArrived;
this.gestureDetectorList = new List<GestureDetect>();
InitializeComponent();
//GestureDetect detector = new GestureDetect(this.kinectSensor);
// 2) Initialize the background removal tool.
int maxBodies = this.kinectSensor.BodyFrameSource.BodyCount;
for (int i = 0; i < maxBodies; ++i)
{
GestureResult result = new GestureResult(i, false, false, 0.0f);
GestureDetect detector = new GestureDetect(this.kinectSensor, result);
this.gestureDetectorList.Add(detector);
this.bodyFrameReader.FrameArrived += this.Reader_BodyFrameArrived;
choice.Add(result.detected);
}
}
choice[i]
的值保持为 false,gestureDetectorList[i].result
对 body 为 null。我哪里错了?
好吧,我还是不知道哪里出错了。我所做的是通过创建方法来从“GestureDetect”函数中更新 MainWindow
中的标志并使用这些标志调用我的 'Capture' 方法来解决这个问题。
所以这是一个可能的解决方法。如果有人能告诉我我要去哪里,虽然我真的很感激,因为我想不通。
谢谢。