使用kinect将用户面上的跟踪点放入阵列中

时间:2012-11-21 15:09:33

标签: c# arrays tracking kinect face-recognition

我目前正在尝试使用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;

我正在做的只是一个简单的错误,或者这些信息不能以这种方式放入数组中吗?

此外,一旦我掌握了积分的位置,我该如何在这个位置检索深度信息?

1 个答案:

答案 0 :(得分:1)

您似乎没有初始化阵列。

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

这可以解释数组中的空指针,除非你在引用代码之外声明这一点。

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