2

私はwinformを使用してVS2012に基づくKinectアプリケーションを開発しています。いくつかのメソッドを試した後でも、あるクラスから別のクラスに値を渡すことができませんでした。

基本的に、パブリックMainWindow()、パブリックパーシャルFaceTrackingViewer()、パブリックの3つのクラスがありSkeletonFaceTracker()ます。最後のクラスはFaceTrackingViewer()クラスにあります。

SkeletonFaceTracker()には、次のものがあります。

public bool lastFaceTrackSucceeded { get; set; }

internal void OnFrameReady(KinectSensor kinectSensor, ColorImageFormat colorImageFormat, byte[] colorImage, DepthImageFormat depthImageFormat, short[] depthImage, Skeleton skeletonOfInterest)
{
    // something else
    if (this.faceTracker != null)
    {
        this.lastFaceTrackSucceeded = frame.TrackSuccessful; //where it's set to be true.
        //something else
    }
}

また、最初の行を次のように変更しようとしました。

public bool lastFaceTrackSucceeded;

public bool LastFaceTrackSucceeded
{
    get { return lastFaceTrackSucceeded; }
    private set { lastFaceTrackSucceeded = value; }
}

でも2つは同じだと思います。

MainWindow()には、次のものがあります。

public partial class MainWindow : Window
{
    //some other irrelevant code snippets

    private FaceTrackingViewer.SkeletonFaceTracker skeletonFaceTracker = new FaceTrackingViewer.SkeletonFaceTracker();

    private void button_faceOnly_Click(object sender, RoutedEventArgs e)
    {
        bool faceTrackSucceeded = skeletonFaceTracker.lastFaceTrackSucceeded;
        // if I use the second structure in SkeletonFaceTracker(), it should be:
        // bool faceTrackSucceeded = skeletonFaceTracker.LastFaceTrackSucceeded;

        if (faceTrackSucceeded == true )
        {
             //do something
        }
    }
}

ただし、またはinがである場合でも、bool faceTrackSucceededは常にです。私は非常に混乱していて、どこがうまくいかなかったのかわかりません。falselastFaceTrackSucceededLastFaceTrackSucceededSkeletonFaceTracker()true

FaceTrackingViewer()すべてのビデオ処理と顔追跡アクションはクラスで行われることに注意してください。いくつかのパラメータと構造をに渡したいだけですMainWindow()

ありがとうございました

4

1 に答える 1

0

まず最初に、テスト目的で変数を公開していると思います。 lastFaceTrackSucceededプロパティを定義する2つの方法は、この例では機能的に同じです。

私が考えることができる他の唯一のことは、あなたがの別のインスタンスLastFaceTrackSucceededtrueを設定しているということです。あなたは私がこれについて確信するのに十分なコードを提供していませんが、2つ(またはそれ以上)のインスタンスがある場合、それらを混同するのは簡単です。SkeletonFaceTracker

于 2013-03-16T15:53:41.733 に答える