【问题标题】:Obtaining Depth Information of Facial Points Using Kinect使用 Kinect 获取面部点的深度信息
【发布时间】:2012-11-11 01:53:58
【问题描述】:

我目前正在使用 Microsoft 的 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;
            }

但这些点似乎是彩色图像的坐标。如何获取有关每个像素的相应深度信息。比如用户脸上的“20”点?

【问题讨论】:

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

标签: c# sdk kinect face-recognition depth


【解决方案1】:

找到答案

“GetProjected3DShape”形状包含面部跟踪基础使用的 2D 坐标

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

两者的比较

        private EnumIndexableCollection<FeaturePoint, PointF> ColourPoints;

        private EnumIndexableCollection<FeaturePoint, Vector3DF> DepthPoints;

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

【讨论】:

    猜你喜欢
    • 2015-02-01
    • 1970-01-01
    • 2014-03-23
    • 1970-01-01
    • 2016-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多