C# 利用Kinect获取面部点的深度信息

C# 利用Kinect获取面部点的深度信息,c#,sdk,kinect,face-recognition,depth,C#,Sdk,Kinect,Face Recognition,Depth,我目前正在使用微软的SDK跟踪一张脸,可以检测到脸上的121个点。我可以得到以下庄园中各点的坐标: if (!this.lastFaceTrackSucceeded || this.skeletonTrackingState != SkeletonTrackingState.Tracked) return; var faceModelPts = new List<Point>();

我目前正在使用微软的SDK跟踪一张脸,可以检测到脸上的121个点。我可以得到以下庄园中各点的坐标:

            if (!this.lastFaceTrackSucceeded || this.skeletonTrackingState != SkeletonTrackingState.Tracked)
                return;

            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));
                FaceDataPoints.XPointInfo[i] = this.facePoints[i].X;
                FaceDataPoints.YPointInfo[i] = this.facePoints[i].Y;
            }
如果(!this.lastFaceTrackSuccessed | | this.skeletonTrackingState!=skeletonTrackingState.Tracked)
返回;
var faceModelPts=新列表();
var faceModel=新列表();
对于(int i=0;i
但这些点似乎是彩色图像的坐标。如何获取每个像素的深度信息。例如用户脸上的“20”点?

找到了答案

“GetProjected3DShape”形状保存人脸跟踪基础使用的二维坐标

要获取深度信息,请使用“Get3DShape”

二者的比较

        private EnumIndexableCollection<FeaturePoint, PointF> ColourPoints;

        private EnumIndexableCollection<FeaturePoint, Vector3DF> DepthPoints;
私有EnumIndexableCollection色点;
私有EnumIndexableCollection DepthPoints;

深度点保存每个面部点的X、Y和Z坐标信息

通过FaceTracking项目查看“DepthToColor”。追踪器正在某个地方映射这些坐标——我找到了几个参考,但没有追溯到确切的位置。您可能可以找到深度映射到颜色的点。我在“FaceTracker.cs”中找到了一对,它们位于DepthToColorCallBack下。这就是你说的吗?是的。此函数移动深度点以匹配彩色图像。修改代码并删除这些可能会得到原始深度点。我还没试过这个,所以我不能肯定。如果时间允许,我很快就会试试。