0

我目前正在尝试使用 xbox kinect 跟踪用户的面部。我从“面部跟踪基础”中获取了一些代码,并存储了它使用的点的位置:

            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];

这将解释数组中的空指针,除非您在引用的代码之外声明它。

在 Visual Studio 中的该行上设置断点。当您在调试期间点击它时,请检查以验证它xarray不为空。

于 2012-11-21T17:57:35.467 回答