저는 Kinect for Windows SDK 1.8을 약간 놀았습니다. 잠시 후 다시 익숙해졌습니다. 컬러 및 스켈레톤 스트림을 사용하여 사용자의 비디오 피드에 스켈레톤을 오버레이하는 동시에 자신의 몸통의 X, Y 및 Z 좌표를 실시간으로 표시하는 기본 응용 프로그램을 실행합니다. 이 모든 것이 완벽하게 작동하지만 응용 프로그램을 종료 할 때 문제가 발생했습니다. 첫 번째, 내 Window_Close 이벤트는 다음과 같이 보았다 :Kinect의 모든 스트림과 기능을 윈도우에서 완전히 종료하려면 어떻게합니까?
private void Window_Closed(object sender, EventArgs e)
{
// Turn off timers.
RefreshTimer.IsEnabled = false;
RefreshTimer.Stop();
UpdateTimer.IsEnabled = false;
UpdateTimer.Stop();
// Turn off Kinect
if (this.mainKinect != null)
{
try
{
this.mainKinect.Stop();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
this.TxtBx_KinectStatus.Text += "\n[" + DateTime.Now.TimeOfDay.ToString() + "] " + this.mainKinect.UniqueKinectId.ToString() + " has been turned off.";
}
// Shut down application
Application.Current.Shutdown();
}
내가 'Application.Current.Shutdown을() 내 프로그램이 중단 결코 실제로 가까운 내가 창을 닫을 때 것 때문 덧붙였다. 함수를 통해 this.mainKinect.Stop()에 매달리는 것을 발견했습니다. 여기서 mainKinect는 Kinect 객체로 실제 Kinect를 참조합니다. 두 스트림을 올바르게 종료 할 수 없다고 생각하여 추가 했으므로 Stop() 직전에
this.mainKinect.ColorStream.Disable();
this.mainKinect.SkeletonStream.Disable();
이 추가되었습니다. 나는 그것이 실제로 SkeletonStream.Disable()에 매달려 있음을 알았고, 나는 왜 그런지 모른다. 나머지 코드 대부분은 예제에서 나온 것입니다. 따라서 이것이 작동하지 않는 이유는 모르겠습니다. 아이디어가 있거나 코드를 더 게시하고 싶다면 언제든지 주저하지 마십시오.
월요일에 다시 일할 때 감사 드려요. 유일한 것은, Stop()에 예외를 던지지 않는 것처럼 보일뿐입니다. –
내가 이전 버전 (1.5 또는 1.6)에 sdk에 "버그"가 있음을 상기 방식으로 알았습니다. 중지하기 전에 스트림을 비활성화 한 것을 잊어 버린 경우 kinect의 전원을 꺼야 제대로 연결이 끊어집니다 . 위의 방법으로 kinect를 멈추고 난 후에이 문제가 발생했습니다. 그러나 버그가 새로운 SDK와 함께 존재하는지 테스트하지 않았습니다. – nhok
흥미 롭습니다. Kinect를 다시 시작하고이 문제가 없어지는지 살펴 보겠습니다. 저는 SDK 1.8을 사용하고 있습니다 만, 그럴 가치가 있습니다. –