2013-04-02 4 views
1

최신 SDK (1.7)로 약간의 연주를하고 있는데, 예제 중 하나에서 약간의 변경을하고 싶습니다.ViewModel을 사용하여 Kinect 상호 작용 샘플에서 골격 데이터를 전달하는 방법

골격, 깊이 또는 컬러 이미지에서 데이터를 가져오고 싶은데 KinectAttractWindow이라는 프로젝트가 있지만 뷰와 뷰 모델간에 이러한 데이터를 전달하는 방법을 알 수 없습니다. 예를 들어이 HomeScreenViewModel에서이 HomeScreenView을 사용하여 골격을 그립니다. 또는 동일한 프로젝트 아키텍처를 사용하여 깊이 또는 색상 데이터를 표시하는 방법?

올바른 방법으로 수행하는 방법은 무엇입니까? 나 한테 조언을 해줄 수있어?

나는 나의 HomeView와 뷰 모델 업데이트가 있지만 여기 NullReferenceException이 얻을 : 개체 RGBImage과 재산 DisplayImage가 없습니다

allmake 확인의
'this.RGBImage.DisplayImage.Source = 
       BitmapSource.Create(colorFrame.Width, 
       colorFrame.Height, 
       96, 
       96, 
       PixelFormats.Bgr32, 
       null, 
       pixels, 
       stride);' 
+0

null을 확인 했습니까? 그 파일을 어떤 파일에 넣었습니까? –

+0

이 코드는 HomeScreenViewModel.cs에서 왔으며 BitmapSource가 데이터를 제공하지 않는 것 같습니다. –

+1

지금까지 간단히 훑어 보았지만 DataContect 집합은 보지 못했습니다. 나는 그것을 놓쳤는가? 그렇지 않은 것이 아닌가? –

답변

1

먼저 null .I 사용 WriteableBitmap을 내 RGB 값을 보여 하나의 WriteableBitmap 객체를 생성하고 픽셀을 다시 작성하므로 성능이 향상됩니다. WriteableBitmap here에 대한 자세한 정보를 찾을 수 있습니다.

이처럼 사용할 수 있습니다 -

WriteableBitmap wBitmap = new WriteableBitmap(colorFrame.Width, 
                colorFrame.Height, 
                // Standard DPI 
                96, 96, 
                // Current format for the ColorImageFormat 
                PixelFormats.Bgr32, 
                // BitmapPalette 
                null); 

객체에 새로운 픽셀 쓰기이 수행하여 - 이미지 컨트롤에 할당

wBitmap.WritePixels(
       // Represents the size of our image 
       new Int32Rect(0, 0, colorFrame.Width, colorFrame.Height), 
       // Our image data 
       _pixelData, 
       // How much bytes are there in a single row? 
       colorFrame.Width * colorFrame.BytesPerPixel, 
       // Offset for the buffer, where does he need to start 
       0); 

을 -

this.RGBImage.DisplayImage.Source = wBitmap; 

을 스켈레톤 데이터

당신은 Enable() 스트림에서 정확히 같은 뼈대 추적을 할 수 있으며, SkeletonFrameReady에서 들어오는 데이터를 처리하고 ViewModel에있는 모든 데이터를 저장합니다. 이렇게하면 이러한 속성에 데이터 바인딩 할 수 있습니다.

+0

이제 Visual Studio 나 Blend에서 [HomeScreenView] (https://github.com/tkowalczyk/KinectAttractWindow/blob/master/KinectAttractWindow/KinectAttractWindow/View/HomeScreenView.xaml)를 열 때 RGB 카메라의 데이터를 볼 수 있지만 KinectSensor '객체가 다른 방식으로 전달되거나 [KinectController] (https://github.com/tkowalczyk/KinectAttractWindow/blob/master)에서 사용되어야한다고 생각합니다.이 오류는'Kinect가 다른 프로세스에서 이미 사용 중입니다. /KinectAttractWindow/KinectAttractWindow/ViewModels/KinectController.cs) 그러나 어떻게? –