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); } }
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); } } } }
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); }