Beispiel #1
0
        private void DrawFaceMask(DrawingContext drawingContext)
        {
            var faceModelPts = new List <Point>();
            var faceModel    = new List <FaceModelTriangle>();

            var mapper = Sensor.CoordinateMapper;

            for (int i = 0; i < this.facePoints.Count; i++)
            {
                var facePoint     = facePoints[i];
                var skeletonPoint = new SkeletonPoint()
                {
                    X = facePoint.X, Y = facePoint.Y, Z = facePoint.Z
                };

                var depthImagePoint = mapper.MapSkeletonPointToDepthPoint(skeletonPoint, DepthImageFormat);

                faceModelPts.Add(new Point(depthImagePoint.X + 0.5f, depthImagePoint.Y + 0.5f));
            }

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

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

            drawingContext.DrawGeometry(Brushes.LightYellow, new Pen(Brushes.LightYellow, 1.0), faceModelGroup);
        }
            public void DrawFaceModel(DrawingContext drawingContext)
            {
                if (!this.lastFaceTrackSucceeded || this.skeletonTrackingState != SkeletonTrackingState.Tracked)
                {
                    if (lastFaceModelGroup != null)
                    {
                        drawingContext.DrawGeometry(Brushes.Red, new Pen(Brushes.Red, 1.0), lastFaceModelGroup);
                    }
                    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));
                }

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

                lastFaceModelGroup = 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));
                    lastFaceModelGroup.Children.Add(faceTriangle);
                }
                drawingContext.DrawGeometry(Brushes.AntiqueWhite, new Pen(Brushes.AntiqueWhite, 1.0), lastFaceModelGroup);
                drawingContext.DrawGeometry(Brushes.Red, new Pen(Brushes.Red, 1.0), lastFaceModelGroup.Children[0]);
            }
            public void DrawFaceModel(DrawingContext drawingContext, int personIndex)
            {
                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));
                }

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

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

                SolidColorBrush[] colors = new SolidColorBrush[6] {
                    Brushes.Blue, Brushes.Yellow, Brushes.Pink, Brushes.Green, Brushes.Pink, Brushes.Salmon
                };
                drawingContext.DrawGeometry(colors[(personIndex % 6)], new Pen(colors[(personIndex % 6)], 1.0), faceModelGroup);
            }
            public void DrawFaceModel(DrawingContext drawingContext)
            {
                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));
                }

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

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

                drawingContext.DrawGeometry(Brushes.LightYellow, new Pen(Brushes.LightYellow, 1.0), faceModelGroup);
            }
        private void DrawFaceMask(DrawingContext drawingContext)
        {
            var faceModelPts = new List<Point>();
            var faceModel = new List<FaceModelTriangle>();

            var mapper = Sensor.CoordinateMapper;

            for (int i = 0; i < this.facePoints.Count; i++)
            {
                var facePoint = facePoints[i];
                var skeletonPoint = new SkeletonPoint() { X = facePoint.X, Y = facePoint.Y, Z = facePoint.Z };

                var depthImagePoint = mapper.MapSkeletonPointToDepthPoint(skeletonPoint, DepthImageFormat);

                faceModelPts.Add(new Point(depthImagePoint.X + 0.5f, depthImagePoint.Y + 0.5f));
            }

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

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

            drawingContext.DrawGeometry(Brushes.LightYellow, new Pen(Brushes.LightYellow, 1.0), faceModelGroup);
        }
            public void DrawFaceModel(DrawingContext drawingContext)
            {
                if (!this.lastFaceTrackSucceeded || this.skeletonTrackingState != SkeletonTrackingState.Tracked)
                {
                    return;
                }

                double x, y;

                ////czubek głowy -0,
                //double x = this.facePoints[0].X;
                //double y = this.facePoints[0].Y;
                //curNoseZ = this.test[58].Z;
                ////drawingContext.DrawEllipse(Brushes.Red, new Pen(Brushes.Red, 1.0), new Point(x, y), 8, 8);

                ////IDEKS 4 brwi
                //x = this.facePoints[4].X;
                //y = this.facePoints[4].Y;
                //drawingContext.DrawEllipse(Brushes.Yellow, new Pen(Brushes.Yellow, 1.0), new Point(x,y), 8,8);

                ////IDEKS 35 centrum czola
                //x = this.facePoints[35].X;
                //y = this.facePoints[35].Y;
                //drawingContext.DrawEllipse(Brushes.ForestGreen, new Pen(Brushes.ForestGreen, 1.0), new Point(x, y), 8, 8);

                ////IDEKS 40 dolna warga
                //x = this.facePoints[40].X;
                //y = this.facePoints[40].Y;
                //drawingContext.DrawEllipse(Brushes.White, new Pen(Brushes.White, 1.0), new Point(x, y), 8, 8);

                ////IDEKS 10 broda
                x     = this.facePoints[10].X;
                y     = this.facePoints[10].Y;
                chinZ = this.test[10].Z;
                //drawingContext.DrawEllipse(Brushes.Magenta, new Pen(Brushes.Magenta, 1.0), new Point(x, y), 8, 8);

                ////??? nose
                //x = this.facePoints[25].X;
                //y = this.facePoints[25].Y;
                //drawingContext.DrawEllipse(Brushes.Blue, new Pen(Brushes.Blue, 1.0), new Point(x, y), 8, 8);

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

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

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

                drawingContext.DrawGeometry(Brushes.LightYellow, new Pen(Brushes.LightYellow, 1.0), faceModelGroup);
            }