0

私は現在、xboxkinectを使用してユーザーの顔を追跡しようとしています。「顔追跡の基本」からいくつかのコードを取得し、使用するポイントの場所を保存しました。

            var faceModelPts = new List<Point>();
            var faceModel = new List<FaceModelTriangle>();

            for (int i = 0; i < this.facePoints.Count; i++)
            {
                faceModelPts.Add(new Point(this.facePoints[i].X + 0.5f, this.facePoints[i].Y + 0.5f));
            }

この情報を使用して、これらのポイント間の距離を計算できるようにしたいと思います。だから私はこれらを次のような別の配列に入れてみました:

            var faceModelPts = new List<Point>();
            var faceModel = new List<FaceModelTriangle>();
            double[] xarray;
            double[] yarray;

            for (int i = 0; i < this.facePoints.Count; i++)
            {
                faceModelPts.Add(new Point(this.facePoints[i].X + 0.5f, this.facePoints[i].Y + 0.5f));
                xarray[i] = this.facePoints[i].X;
                yarray[i] = this.facePoints[i].Y;
            }

しかし、これはエラーを返すようです。しかし、私は次のことを行うことで情報を得ることができます:

            double xpos21 = this.facePoints[21].X;

私がしていることに単純なエラーがありますか、それともこの情報をこの方法で配列に配置することはできませんか?

また、ポイントの位置を取得したら、この場所の深度情報を取得するにはどうすればよいですか?

4

1 に答える 1

1

アレイを初期化しているようには見えません。

xarray = new double[someSize];
yarray = new double[someSize];

引用符で囲まれたコードの外でこれを宣言しない限り、配列内のnullポインタを説明します。

VisualStudioでその行にブレークポイントを設定します。xarrayデバッグ中にヒットした場合は、それがnullでないことを確認してください。

于 2012-11-21T17:57:35.467 に答える