我目前正在尝试使用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;
我正在做的只是一个简单的错误,或者这些信息不能以这种方式放入数组中吗?
此外,一旦我掌握了积分的位置,我该如何在这个位置检索深度信息?
答案 0 :(得分:1)
您似乎没有初始化阵列。
xarray = new double[someSize];
yarray = new double[someSize];
这可以解释数组中的空指针,除非你在引用代码之外声明这一点。
在Visual Studio中的该行上设置断点。在调试期间点击它时,请检查以确认xarray
不为空。