コード例 #1
0
        public void updateData(PXCMFaceData.Face face)
        {
            PXCMFaceData.LandmarksData ldata = face.QueryLandmarks();

            // get the landmark data
            var landmarkGroupTypes = Enum.GetValues(typeof(PXCMFaceData.LandmarksGroupType)).Cast <PXCMFaceData.LandmarksGroupType>();
            int featureIdx         = 0;

            // 对于每个LandmarkPoint转换成成员变量中的world属性
            foreach (var landmarkGroupType in landmarkGroupTypes)
            {
                PXCMFaceData.LandmarkPoint[] points;

                ldata.QueryPointsByGroup(landmarkGroupType, out points);

                PXCMPoint3DF32[] Point3DArray = new PXCMPoint3DF32[points.Length];
                for (int i = 0; i < points.Length; i++)
                {
                    Point3DArray[i] = points[i].world;
                    // 把脸部特征放入数组中
                    Landmarks[featureIdx++] = points[i].world.x;
                    Landmarks[featureIdx++] = points[i].world.y;
                    Landmarks[featureIdx++] = points[i].world.z;
                }

                // 将world坐标加进去
                // landmarksData.Add(landmarkGroupType, Point3DArray);
            }
        }
コード例 #2
0
        public override void Work(Graphics g)
        {
            if (model.FaceAktuell != null)
            {
                PXCMFaceData.LandmarkPoint[] points;

                for (int i = 0; i < landmarkGroupTypes.Length; i++)
                {
                    PXCMFaceData.LandmarksData lp = model.FaceAktuell.QueryLandmarks();
                    if (lp == null)
                    {
                        //    Console.WriteLine("LandmarksData null, goddamnit!!");
                        g.DrawString("LandmarksData null, goddamnit!!", errorFont, errorBrush, errorRect);
                        break;
                    }
                    lp.QueryPointsByGroup(landmarkGroupTypes[i], out points);
                    //Draw points
                    for (Int32 j = 0; j < points.Length; j++)
                    {
                        Point p = new Point();

                        p.X = (int)points[j].image.x;
                        p.Y = (int)points[j].image.y;

                        g.DrawEllipse(pens[i], points[j].image.x, points[j].image.y, 3, 3);
                    }
                }
            }
        }
コード例 #3
0
        public void updateData(PXCMFaceData.Face face)
        {
            if (face == null)
            {
                return;
            }
            PXCMFaceData.LandmarksData ldata = face.QueryLandmarks();
            if (ldata == null)
            {
                return;
            }

            PXCMRectI32 rect;

            face.QueryDetection().QueryBoundingRect(out rect);

            // get the landmark data
            var landmarkGroupTypes = Enum.GetValues(typeof(PXCMFaceData.LandmarksGroupType)).Cast <PXCMFaceData.LandmarksGroupType>();

            int count = 0;

            // 对于每个LandmarkPoint转换成成员变量中的world属性
            foreach (var landmarkGroupType in landmarkGroupTypes)
            {
                PXCMFaceData.LandmarkPoint[] points;

                ldata.QueryPointsByGroup(landmarkGroupType, out points);

                PXCMPoint3DF32[] Point3DArray = new PXCMPoint3DF32[points.Length];
                for (int i = 0; i < points.Length; i++)
                {
                    Point3DArray[i] = points[i].world;
                    Console.WriteLine(String.Join(" ", rect.x, rect.y, rect.w, rect.h));
                    Console.WriteLine(points[i].image.x + "\t" + points[i].image.y + "\t" + points[i].world.z);
                }
                count += points.Length;
                // 将world坐标加进去
                landmarksData.Add(landmarkGroupType, Point3DArray);
            }

            Console.WriteLine(count);
        }