在前额点使用kinect c# wpf
Making a point at forehead use kinect c# wpf
我想通过使用来自 Kinect for Windows Developers Toolkit v1.7.0 的示例 "Face Tracking Basics WPF" 在我的额头上做一个说明。有人知道吗?
终于成功了。这是步骤。
打开 FaceTrackingViewer.xaml
将 "DrawFaceModel" 替换为:
public void DrawFaceModel(DrawingContext drawingContext)
{
if (!this.lastFaceTrackSucceeded || this.skeletonTrackingState != SkeletonTrackingState.Tracked)
{
return;
}
var faceModelPts = new List<Point>();
var faceModel = new List<FaceModelTriangle>();
//double[] xarray;
//double[] yarray;
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));
//xarray[i] = this.facePoints[i].X;
//yarray[i] = this.facePoints[i].Y;
}
// double xpos21 = this.facePoints[21].X;
//double xpos21 = this.facePoints[21].X;
//Bikin Titik di jidat
foreach (var t in faceTriangles)
{
var triangle = new FaceModelTriangle();
triangle.P1 = faceModelPts[t.First];
triangle.P2 = faceModelPts[t.Second];
triangle.P3 = faceModelPts[t.Third];
faceModel.Add(triangle);
}
// ColorImagePoint j1p = faceModelPts.Add(new Point(this.facePoints[1].X + 0.5f, this.facePoints[1].Y + 0.5f));
// ColorImagePoint j1p = myKinect.MapSkeletonPointToColor(faceModelPts[1].Position, ColorImageFormat.RgbResolution640x480Fps30);
//var faceModelGroup = new GeometryGroup();
//for (int i = 0; i < faceModel.Count; i++)
//{
// var faceTriangle = new GeometryGroup();
// faceTriangle.Children.Add(new LineGeometry(faceModel[i].P1, faceModel[i].P2));
// faceTriangle.Children.Add(new LineGeometry(faceModel[i].P2, faceModel[i].P3));
// faceTriangle.Children.Add(new LineGeometry(faceModel[i].P3, faceModel[i].P1));
// faceModelGroup.Children.Add(faceTriangle);
//}
var faceModelGroup = new GeometryGroup();
//for (int i = 0; i < faceModel.Count; i++)
//{
var faceTriangle = new GeometryGroup();
faceTriangle.Children.Add(new LineGeometry(faceModel[1].P1, faceModel[1].P2));
faceTriangle.Children.Add(new LineGeometry(faceModel[1].P2, faceModel[1].P3));
faceTriangle.Children.Add(new LineGeometry(faceModel[1].P3, faceModel[1].P1));
faceModelGroup.Children.Add(faceTriangle);
//}
//((MainWindow)System.Windows.Application.Current.MainWindow).jidat1.Content = Math.Round(facePoints[1].X,3);
//((MainWindow)System.Windows.Application.Current.MainWindow).jidat2.Content = Math.Round(facePoints[1].Y,3);
drawingContext.DrawGeometry(Brushes.LightYellow, new Pen(Brushes.LightYellow, 1.0), faceModelGroup);
//drawingContext.DrawEllipse(Brushes.LightYellow, new Pen(Brushes.LightYellow, 1.0), faceModelPts[1]);
}
你的脸上会有一个三角形
我想通过使用来自 Kinect for Windows Developers Toolkit v1.7.0 的示例 "Face Tracking Basics WPF" 在我的额头上做一个说明。有人知道吗?
终于成功了。这是步骤。 打开 FaceTrackingViewer.xaml
将 "DrawFaceModel" 替换为:
public void DrawFaceModel(DrawingContext drawingContext)
{
if (!this.lastFaceTrackSucceeded || this.skeletonTrackingState != SkeletonTrackingState.Tracked)
{
return;
}
var faceModelPts = new List<Point>();
var faceModel = new List<FaceModelTriangle>();
//double[] xarray;
//double[] yarray;
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));
//xarray[i] = this.facePoints[i].X;
//yarray[i] = this.facePoints[i].Y;
}
// double xpos21 = this.facePoints[21].X;
//double xpos21 = this.facePoints[21].X;
//Bikin Titik di jidat
foreach (var t in faceTriangles)
{
var triangle = new FaceModelTriangle();
triangle.P1 = faceModelPts[t.First];
triangle.P2 = faceModelPts[t.Second];
triangle.P3 = faceModelPts[t.Third];
faceModel.Add(triangle);
}
// ColorImagePoint j1p = faceModelPts.Add(new Point(this.facePoints[1].X + 0.5f, this.facePoints[1].Y + 0.5f));
// ColorImagePoint j1p = myKinect.MapSkeletonPointToColor(faceModelPts[1].Position, ColorImageFormat.RgbResolution640x480Fps30);
//var faceModelGroup = new GeometryGroup();
//for (int i = 0; i < faceModel.Count; i++)
//{
// var faceTriangle = new GeometryGroup();
// faceTriangle.Children.Add(new LineGeometry(faceModel[i].P1, faceModel[i].P2));
// faceTriangle.Children.Add(new LineGeometry(faceModel[i].P2, faceModel[i].P3));
// faceTriangle.Children.Add(new LineGeometry(faceModel[i].P3, faceModel[i].P1));
// faceModelGroup.Children.Add(faceTriangle);
//}
var faceModelGroup = new GeometryGroup();
//for (int i = 0; i < faceModel.Count; i++)
//{
var faceTriangle = new GeometryGroup();
faceTriangle.Children.Add(new LineGeometry(faceModel[1].P1, faceModel[1].P2));
faceTriangle.Children.Add(new LineGeometry(faceModel[1].P2, faceModel[1].P3));
faceTriangle.Children.Add(new LineGeometry(faceModel[1].P3, faceModel[1].P1));
faceModelGroup.Children.Add(faceTriangle);
//}
//((MainWindow)System.Windows.Application.Current.MainWindow).jidat1.Content = Math.Round(facePoints[1].X,3);
//((MainWindow)System.Windows.Application.Current.MainWindow).jidat2.Content = Math.Round(facePoints[1].Y,3);
drawingContext.DrawGeometry(Brushes.LightYellow, new Pen(Brushes.LightYellow, 1.0), faceModelGroup);
//drawingContext.DrawEllipse(Brushes.LightYellow, new Pen(Brushes.LightYellow, 1.0), faceModelPts[1]);
}
你的脸上会有一个三角形