2

私は Kinect SDK 1.6 を使用しています。Windows Kinect クイックスタート シリーズのSkeleton Tracking Funamentalsチュートリアルに従っています。こちらから入手できます。

これらのチュートリアルが 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リストです。他のすべて(スケルトンの追跡など)は機能しているので、本当にわかりません

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;

リクエストに応じて、コードの詳細を提供できます。

4

4 に答える 4

8

Coding4Fun への正しい参照がある場合、実際にはこれが欠けています。

using Coding4Fun.Kinect.Wpf;

コードの先頭に。

于 2012-11-10T09:50:24.027 に答える
5

必要に応じて、この SDK を最新の Microsoft SDK と組み合わせて使用​​できますScaleTo()

http://c4fkinect.codeplex.com/

これはオープン ソースであるため、それらのコードを使用して独自のScaleTo().

正しい using ディレクティブを忘れずに追加してください。

using Coding4Fun.Kinect.Wpf;

C# で新しい Kinect SDK を使用してジョイントをスケーリングする方法

于 2012-11-16T17:33:27.140 に答える
2

スケーリングは 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;
}
于 2012-11-09T17:42:37.560 に答える
0
you can fix the error using this dll file


http://c4fkinect.codeplex.com/releases/view/76271
于 2013-06-30T15:39:17.773 に答える