XNA Framework 4.0
と を使用してゲームを開発していKinect 1.6 SDK
ます。私のコードは色、深度、スケルトン データを使用しているため、AllFramesReady
イベントを使用しています。
ゲームを実行し、検出する人がいると、イベントによってトリガーされる関数がそのAllFramesReady
人の画像とスケルトン データを抽出し、Player
クラスの属性を設定します。
問題は、このコードが過去に完全に機能していたことです。しかし、コードに変更を加えていませんが、現在は機能していません。他のコンピューターで試してみましたが、うまくいきました。しかし、同じコードが私のコンピューターでは機能しません。
私がデバッグしたとき、私はそれを見DepthFrameEventReadyArgs
てColorFrameEventReadyArgs
、メンバーが呼び出されisInvalid
、それらがtrueに設定されました。このため、私が使用するとき:
DepthImageFrame depthVideoFrame = mainFrame.OpenDepthImageFrame();
... null を取得しますdepthVideoFrame
。カラーフレームも同様です。
Kinectを初期化する場所は次のとおりです(Initialize
):
if (KinectSensor.KinectSensors.Count > 0)
{
kinect = KinectSensor.KinectSensors[0];
EnableColorStream(kinect);
EnableDepthStream(kinect);
EnableSkeletonStream(kinect);
kinect.AllFramesReady += new EventHandler<AllFramesReadyEventArgs>(kinect_AllFramesReady);
kinect.Start();
}
メソッドを有効にする:
void EnableColorStream(KinectSensor ks)
{
ks.ColorStream.Enable(ColorFormat);
colorWidth = ks.ColorStream.FrameWidth;
colorHeight = ks.ColorStream.FrameHeight;
colorVideo = new Texture2D(graphics.GraphicsDevice, ks.ColorStream.FrameWidth, ks.ColorStream.FrameHeight);
}
void EnableDepthStream(KinectSensor ks)
{
ks.DepthStream.Enable(DepthFormat);
depthWidth = ks.DepthStream.FrameWidth;
depthHeight = ks.DepthStream.FrameHeight;
depthVideo = new Texture2D(graphics.GraphicsDevice, ks.DepthStream.FrameWidth, ks.DepthStream.FrameHeight);
}
void EnableSkeletonStream(KinectSensor ks)
{
TransformSmoothParameters tsp = new TransformSmoothParameters();
tsp.Smoothing = 0f;
tsp.Correction = 0.1f;
tsp.Prediction = 0.1f;
tsp.JitterRadius = 0.1f;
tsp.MaxDeviationRadius = 0.1f;
ks.SkeletonStream.Enable(tsp);
}
kinect_AllFramesReady
私は次のようなものを使用しています:
using (ColorImageFrame colorVideoFrame = imageFrames.OpenColorImageFrame())
{
...
}
using (SkeletonFrame skeletonFrame = imageFrames.OpenSkeletonFrame())
{
...
}
using (DepthImageFrame depthVideoFrame = imageFrames.OpenDepthImageFrame())
{
...
}
デバッグすると、 member が に設定されているため、colorVideoFrame
と のdepthVideoFrame
値がであることがわかりました。深度と色のデータを使用して他のプログラムを実行すると、正常に実行されますが、この 1 つだけが機能しません。私は現在アイデアがありません。助けてくれてありがとう。null
isInvalid
true