2012-11-09 10 views
2

Я использую Kinect SDK 1.6, и я после Skeleton Отслеживание Funamentals учебник Windows, Kinect Quickstart серии, доступных here.Kinect SDK 1.6 и метод Joint.ScaleTo

Даже если эти учебники были сделаны для SDK 1.0, все шло хорошо, пока я не выполнил инструкции, чтобы отобразить положение моих рук в окне нестандартного размера (скажем, 1280x720).

Dan Fernandez использует следующую строку кода для достижения этой

private void ScalePosition(FrameworkElement element, Joint joint) 
    { 
     // Convert the value to X/Y; 
     Joint scaledJoint = joint.ScaleTo(1280, 720); 

     .... 
    }  

Ну, метод ScaleTo не является пользовательской функции, она должна быть представлена ​​в Kinect SDK, но в соответствии с моим редактором, есть нет такого метода. Я не могу найти его, и я думаю, что это могло быть перемещено/переименовано/независимо от SDK 1.0.

Просто, чтобы убедиться, что все в порядке, вот мой список using, everyithing еще (Skeleton отслеживание и т.д.) работает, так что я действительно не могу понять его

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Data; 
using System.Windows.Documents; 
using System.Windows.Input; 
using System.Windows.Media; 
using System.Windows.Media.Imaging; 
using System.Windows.Navigation; 
using System.Windows.Shapes; 

using Microsoft.Kinect; 
using Microsoft.Kinect.Toolkit; 
using Microsoft.Samples.Kinect.WpfViewers; 

я могу дать дополнительно подробнее о моем коде по запросу.

ответ

8

Если у вас есть правильную ссылку на Coding4Fun, вы на самом деле просто не хватает этого:

using Coding4Fun.Kinect.Wpf; 

в начале вашего кода.

2

Scaling является частью библиотеки Coding4Fun, доступна здесь: http://c4fkinect.codeplex.com/

В качестве альтернативы, вы можете написать свой собственный масштаб.

Что-то вроде этого создаст «хит-бокс» отслеживания правой руки, центрированный вокруг правого плеча, и масштабирует его до любого разрешения вашего основного экрана.

double xScaled = (rightHand.Position.X - leftShoulder.Position.X)/((rightShoulder.Position.X - leftShoulder.Position.X) * 2) * SystemParameters.PrimaryScreenWidth; 
double yScaled = (rightHand.Position.Y - head.Position.Y)/(rightHip.Position.Y - head.Position.Y) * SystemParameters.PrimaryScreenHeight; 

Вот еще один пример функции, которая масштабирует Kinect координаты разрешение экрана:

private static double ScaleY(Joint joint) 
{ 
    double y = ((SystemParameters.PrimaryScreenHeight/0.4) * -joint.Position.Y) + (SystemParameters.PrimaryScreenHeight/2); 
    return y; 
} 

private static void ScaleXY(Joint shoulderCenter, bool rightHand, Joint joint, out int scaledX, out int scaledY) 
{ 
    double screenWidth = SystemParameters.PrimaryScreenWidth; 

    double x = 0; 
    double y = ScaleY(joint); 

    // if rightHand then place shouldCenter on left of screen 
    // else place shouldCenter on right of screen 
    if (rightHand) 
    { 
     x = (joint.Position.X - shoulderCenter.Position.X) * screenWidth * 2; 
    } 
    else 
    { 
     x = screenWidth - ((shoulderCenter.Position.X - joint.Position.X) * (screenWidth * 2)); 
    } 


    if (x < 0) 
    { 
     x = 0; 
    } 
    else if (x > screenWidth - 5) 
    { 
     x = screenWidth - 5; 
    } 

    if (y < 0) 
    { 
     y = 0; 
    } 

    scaledX = (int)x; 
    scaledY = (int)y; 
} 
+2

Спасибо, но я уже скачал библиотеку Coding4Fun и добавил ссылку (МОФ, связанные с одним), но это делает не работает .. – INElutTabile

+0

Ваш код 'using' выше, не содержит ссылки на него.Вы забыли добавить его как ссылку или удар в раздел «использование»? –

5

Вы можете использовать этот SDK в сочетании с новейшим Microsoft SDK, если вам нужно ScaleTo():

http://c4fkinect.codeplex.com/

Это открытый исходный код, чтобы вы могли точно также использовать свой код и иметь свой собственный ScaleTo().

Не забудьте добавить правильное, используя директиву:

using Coding4Fun.Kinect.Wpf; 

how to scale joints using the new Kinect SDK in C#

0
you can fix the error using this dll file 


http://c4fkinect.codeplex.com/releases/view/76271