Kinect SDK附帶了在顏色流中創建人臉網格的示例。這看起來像:爲Kinects深度字段創建3D人臉網格
我想創建一個三維網格的深度流
我的代碼目前看起來如下:
private EnumIndexableCollection<FeaturePoint, PointF> facePoints;
private EnumIndexableCollection<FeaturePoint, Vector3DF> depthPoints;
public void DrawFaceModel(DrawingContext drawingContext)
{
if (!this.lastFaceTrackSucceeded || this.skeletonTrackingState != SkeletonTrackingState.Tracked)
return;
var faceModelPts = new List<Point>();
var faceModelPts3D = new List<Point3D>();
var faceModel = new List<FaceModelTriangle>();
var faceModel3D = new List<FaceModelTriangle3D>();
for (int i = 0; i < this.facePoints.Count; i++)
{
faceModelPts3D.Add(new Point3D(this.depthPoints[i].X + 0.5f, this.depthPoints[i].Y + 0.5f, this.depthPoints[i].Z + 0.5f));
}
FaceDataPoints.Number_of_Points = this.facePoints.Count;
foreach (var t in ImageData.faceTriangles)
{
var triangle = new FaceModelTriangle3D();
triangle.Point1_3D = faceModelPts3D[t.First];
triangle.Point2_3D = faceModelPts3D[t.Second];
triangle.Point3_3D = faceModelPts3D[t.Third];
faceModel3D.Add(triangle);
}
var faceModelGroup = new GeometryGroup();
for (int i = 0; i < faceModel.Count; i++)
{
var faceTriangle = new GeometryGroup();
faceTriangle.Children.Add(new LineGeometry(faceModel3D[i].Point1_3D, faceModel3D[i].Point2_3D));
faceTriangle.Children.Add(new LineGeometry(faceModel3D[i].Point2_3D, faceModel3D[i].Point3_3D));
faceTriangle.Children.Add(new LineGeometry(faceModel3D[i].Point3_3D, faceModel3D[i].Point1_3D));
faceModelGroup.Children.Add(faceTriangle); //Add lines to image
}
drawingContext.DrawGeometry(Brushes.LightYellow, new Pen(Brushes.LightYellow, 1.0), faceModelGroup);
}
private struct FaceModelTriangle3D
{
public Point3D Point1_3D;
public Point3D Point2_3D;
public Point3D Point3_3D;
}
我目前得到的錯誤 「錯誤2參數1:無法從'System.Windows.Media.Media3D.Point3D'轉換爲'System.Windows.Point'F:\ Work \ Uni \ 4th Year \ Final Year Project \ Project \ Project 3.0 \ Project 3.0 \ FaceTrackingViewer .xaml.cs 275 68項目3.0 「
正在由引起:
(new LineGeometry(faceModel3D[i].Point2_3D, faceModel3D[i].Point3_3D));
我需要什麼,而不是使用LineGeometry的得到這個工作還是有這樣做的更有效的方式?
另外,一旦我創建了臉部網格,我也希望能夠存儲此信息以便能夠計算臉部上的點之間的距離。那麼我將如何去存儲三角形信息呢?