Example #1
0
        String status2string(FaceModelBuilderCollectionStatus collection)
        {
            String status = String.Empty;

            if ((collection & FaceModelBuilderCollectionStatus.TiltedUpViewsNeeded) != 0)
            {
                status = "Need : Tilted Up Views";
            }
            else if ((collection & FaceModelBuilderCollectionStatus.RightViewsNeeded) != 0)
            {
                status = "Need : Right Views";
            }
            else if ((collection & FaceModelBuilderCollectionStatus.LeftViewsNeeded) != 0)
            {
                status = "Need : Left Views";
            }
            else if ((collection & FaceModelBuilderCollectionStatus.FrontViewFramesNeeded) != 0)
            {
                status = "Need : Front View Frames";
            }
            else if ((collection & FaceModelBuilderCollectionStatus.MoreFramesNeeded) != 0)
            {
                status = "Need : More Frames";
            }

            return(status);
        }
Example #2
0
        /// <summary>
        /// This event is fired when the FaceModelBuilder collection status has changed
        /// </summary>
        /// <param name="sender">object sending the event</param>
        /// <param name="e">event arguments</param>
        private void FaceModelBuilder_CollectionStatusChanged(object sender, CollectionStatusChangedEventArgs e)
        {
            var modelBuilder = sender as FaceModelBuilder;

            FaceModelBuilderCollectionStatus newStatus = modelBuilder.CollectionStatus; //Query the latest status

            this.currentCollectionStatusString = BuildCollectionStatusText(newStatus);
        }
Example #3
0
        /// <summary>
        /// Gets the current collection status
        /// </summary>
        /// <param name="status">Status value</param>
        /// <returns>Status value as text</returns>
        private void GetCollectionStatus(FaceModelBuilderCollectionStatus status)
        {
            bool frontCaptured, leftCaptured, rightCaptured, tiltedCaptured;

            Log.LogMessageSameLine((int)status);
            if ((int)status == 1)
            {
                frontCaptured = leftCaptured = rightCaptured = tiltedCaptured = false;
            }
            else
            {
                if ((status & FaceModelBuilderCollectionStatus.FrontViewFramesNeeded) != 0)
                {
                    frontCaptured = false;
                }
                else
                {
                    frontCaptured = true;
                }

                if ((status & FaceModelBuilderCollectionStatus.LeftViewsNeeded) != 0)
                {
                    leftCaptured = false;
                }
                else
                {
                    leftCaptured = true;
                }

                if ((status & FaceModelBuilderCollectionStatus.RightViewsNeeded) != 0)
                {
                    rightCaptured = false;
                }
                else
                {
                    rightCaptured = true;
                }

                if ((status & FaceModelBuilderCollectionStatus.TiltedUpViewsNeeded) != 0)
                {
                    tiltedCaptured = false;
                }
                else
                {
                    tiltedCaptured = true;
                }
            }

            if (OnAskIfCaptured != null)
            {
                OnAskIfCaptured(frontCaptured, rightCaptured, leftCaptured, tiltedCaptured, false);
            }
        }
        /// <summary>
        /// Initializes a new instance of the KinectFaceTrackingResult class from a set of Kinect face points
        /// </summary>
        public KinectFaceTrackingResult(FaceModel faceModel, FaceModel constructedFaceModel, FaceModelBuilderCollectionStatus builderStatus, FaceAlignment faceAlignment, CoordinateMapper mapper)
        {
            this.FaceModel = faceModel;
            this.ConstructedFaceModel = constructedFaceModel;
            this.BuilderStatus = builderStatus;
            this.FaceAlignment = faceAlignment;

            var vertices = faceModel.CalculateVerticesForAlignment(faceAlignment);
            this.ColorSpaceFacePoints = this.FaceBoundaryPoints(vertices, mapper);

            // Calculate facerect manually from facepoints
            var rectX = this.ColorSpaceFacePoints.Min(x => x.X);
            var rectWidth = this.ColorSpaceFacePoints.Max(x => x.X) - rectX;
            var rectY = this.ColorSpaceFacePoints.Min(x => x.Y);
            var rectHeight = this.ColorSpaceFacePoints.Max(x => x.Y) - rectY;

            this.FaceRect = new System.Drawing.Rectangle(rectX, rectY, rectWidth, rectHeight);
        }
Example #5
0
        private static string GetCollectionStatusText(FaceModelBuilderCollectionStatus status)
        {
            string res = string.Empty;

            if ((status & FaceModelBuilderCollectionStatus.FrontViewFramesNeeded) != 0)
            {
                res = "FrontViewFramesNeeded";
                return(res);
            }

            if ((status & FaceModelBuilderCollectionStatus.LeftViewsNeeded) != 0)
            {
                res = "LeftViewsNeeded";
                return(res);
            }

            if ((status & FaceModelBuilderCollectionStatus.RightViewsNeeded) != 0)
            {
                res = "RightViewsNeeded";
                return(res);
            }

            if ((status & FaceModelBuilderCollectionStatus.TiltedUpViewsNeeded) != 0)
            {
                res = "TiltedUpViewsNeeded";
                return(res);
            }

            if ((status & FaceModelBuilderCollectionStatus.Complete) != 0)
            {
                res = "Complete";
                return(res);
            }

            if ((status & FaceModelBuilderCollectionStatus.MoreFramesNeeded) != 0)
            {
                res = "TiltedUpViewsNeeded";
                return(res);
            }

            return(res);
        }
Example #6
0
        /// <summary>
        /// FaceModelBuilderのCollectionStatusを取得します
        /// </summary>
        private string GetCollectionStatus(FaceModelBuilderCollectionStatus status)
        {
            var msgs = new List <string>();

            if ((status & FaceModelBuilderCollectionStatus.FrontViewFramesNeeded) != 0)
            {
                msgs.Add("FrontViewFramesNeeded");
            }

            if ((status & FaceModelBuilderCollectionStatus.LeftViewsNeeded) != 0)
            {
                msgs.Add("LeftViewsNeeded");
            }

            if ((status & FaceModelBuilderCollectionStatus.MoreFramesNeeded) != 0)
            {
                msgs.Add("MoreFramesNeeded");
            }

            if ((status & FaceModelBuilderCollectionStatus.RightViewsNeeded) != 0)
            {
                msgs.Add("RightViewsNeeded");
            }

            if ((status & FaceModelBuilderCollectionStatus.TiltedUpViewsNeeded) != 0)
            {
                msgs.Add("TiltedUpViewsNeeded");
            }

            if ((status & FaceModelBuilderCollectionStatus.Complete) != 0)
            {
                msgs.Add("Complete!");
            }

            return(string.Join(" / ", msgs));
        }
Example #7
0
        /// <summary>
        /// Build a string from the collection status bit flag combinations (simplified)
        /// </summary>
        /// <param name="status">Status value</param>
        /// <returns>Status value as text</returns>
        private string BuildCollectionStatusText(FaceModelBuilderCollectionStatus status)
        {
            string res = String.Empty;

            if (FaceModelBuilderCollectionStatus.Complete == status)
            {
                return(" Done ");
            }

            if ((status & FaceModelBuilderCollectionStatus.MoreFramesNeeded) != 0)
            {
                res += " More ";
            }

            if ((status & FaceModelBuilderCollectionStatus.FrontViewFramesNeeded) != 0)
            {
                res += " Front";
            }

            if ((status & FaceModelBuilderCollectionStatus.LeftViewsNeeded) != 0)
            {
                res += " Left ";
            }

            if ((status & FaceModelBuilderCollectionStatus.RightViewsNeeded) != 0)
            {
                res += " Right";
            }

            if ((status & FaceModelBuilderCollectionStatus.TiltedUpViewsNeeded) != 0)
            {
                res += "  Up  ";
            }

            return(res);
        }
Example #8
0
        /// <summary>
        /// Gets the current collection status
        /// </summary>
        /// <param name="status">Status value</param>
        /// <returns>Status value as text</returns>
        private void GetCollectionStatus(FaceModelBuilderCollectionStatus status)
        {
            bool frontCaptured, leftCaptured, rightCaptured, tiltedCaptured;

            Log.LogMessageSameLine((int)status);
            if ((int)status == 1)
            {
                frontCaptured = leftCaptured = rightCaptured = tiltedCaptured = false;
            }
            else
            {
                if ((status & FaceModelBuilderCollectionStatus.FrontViewFramesNeeded) != 0)
                {
                    frontCaptured = false;
                }
                else
                {
                    frontCaptured = true;
                }

                if ((status & FaceModelBuilderCollectionStatus.LeftViewsNeeded) != 0)
                {
                    leftCaptured = false;
                }
                else
                {
                    leftCaptured = true;
                }

                if ((status & FaceModelBuilderCollectionStatus.RightViewsNeeded) != 0)
                {
                    rightCaptured = false;
                }
                else
                {
                    rightCaptured = true;
                }

                if ((status & FaceModelBuilderCollectionStatus.TiltedUpViewsNeeded) != 0)
                {
                    tiltedCaptured = false;
                }
                else
                {
                    tiltedCaptured = true;
                }
            }

            if (OnAskIfCaptured != null)
                OnAskIfCaptured(frontCaptured, rightCaptured, leftCaptured, tiltedCaptured, false);
        }
Example #9
0
        String status2string( FaceModelBuilderCollectionStatus collection )
        {
            String status = String.Empty;
            if ( (collection & FaceModelBuilderCollectionStatus.TiltedUpViewsNeeded) != 0 ) {
                status = "Need : Tilted Up Views";
            }
            else if ( (collection & FaceModelBuilderCollectionStatus.RightViewsNeeded) != 0 ) {
                status = "Need : Right Views";
            }
            else if ( (collection & FaceModelBuilderCollectionStatus.LeftViewsNeeded) != 0 ) {
                status = "Need : Left Views";
            }
            else if ( (collection & FaceModelBuilderCollectionStatus.FrontViewFramesNeeded) != 0 ) {
                status = "Need : Front View Frames";
            }
            else if ( (collection & FaceModelBuilderCollectionStatus.MoreFramesNeeded) != 0 ) {
                status = "Need : More Frames";
            }

            return status;
        }
        /// <summary>
        /// FaceModelBuilderのCollectionStatusを取得します
        /// </summary>
        private string GetCollectionStatus(FaceModelBuilderCollectionStatus status)
        {
            var msgs = new List<string>();

            if ((status & FaceModelBuilderCollectionStatus.FrontViewFramesNeeded) != 0)
                msgs.Add("FrontViewFramesNeeded");

            if ((status & FaceModelBuilderCollectionStatus.LeftViewsNeeded)!= 0)
                msgs.Add("LeftViewsNeeded");

            if ((status & FaceModelBuilderCollectionStatus.MoreFramesNeeded) != 0)
                msgs.Add("MoreFramesNeeded");

            if ((status & FaceModelBuilderCollectionStatus.RightViewsNeeded) != 0)
                msgs.Add("RightViewsNeeded");

            if ((status & FaceModelBuilderCollectionStatus.TiltedUpViewsNeeded) != 0)
                msgs.Add("TiltedUpViewsNeeded");

            if ((status & FaceModelBuilderCollectionStatus.Complete) != 0)
                msgs.Add("Complete!");

            return string.Join(" / ", msgs);
        }
        /// <summary>
        /// Gets the current collection status
        /// </summary>
        /// <param name="status">Status value</param>
        /// <returns>Status value as text</returns>
        private static string GetCollectionStatusText(FaceModelBuilderCollectionStatus status)
        {
            string res = string.Empty;

            if ((status & FaceModelBuilderCollectionStatus.FrontViewFramesNeeded) != 0)
            {
                res = "FrontViewFramesNeeded";
                return res;
            }

            if ((status & FaceModelBuilderCollectionStatus.LeftViewsNeeded) != 0)
            {
                res = "LeftViewsNeeded";
                return res;
            }

            if ((status & FaceModelBuilderCollectionStatus.RightViewsNeeded) != 0)
            {
                res = "RightViewsNeeded";
                return res;
            }

            if ((status & FaceModelBuilderCollectionStatus.TiltedUpViewsNeeded) != 0)
            {
                res = "TiltedUpViewsNeeded";
                return res;
            }

            if ((status & FaceModelBuilderCollectionStatus.Complete) != 0)
            {
                res = "Complete";
                return res;
            }

            if ((status & FaceModelBuilderCollectionStatus.MoreFramesNeeded) != 0)
            {
                res = "TiltedUpViewsNeeded-More";
                return res;
            }

            return res;
        }
        /// <summary>
        /// Initializes a new instance of the KinectFaceTrackingResult class from a set of Kinect face points
        /// </summary>
        public KinectFaceTrackingResult(FaceModel faceModel, FaceModel constructedFaceModel, FaceModelBuilderCollectionStatus builderStatus, FaceAlignment faceAlignment, CoordinateMapper mapper)
        {
            this.FaceModel            = faceModel;
            this.ConstructedFaceModel = constructedFaceModel;
            this.BuilderStatus        = builderStatus;
            this.FaceAlignment        = faceAlignment;

            var vertices = faceModel.CalculateVerticesForAlignment(faceAlignment);

            this.ColorSpaceFacePoints = this.FaceBoundaryPoints(vertices, mapper);

            // Calculate facerect manually from facepoints
            var rectX      = this.ColorSpaceFacePoints.Min(x => x.X);
            var rectWidth  = this.ColorSpaceFacePoints.Max(x => x.X) - rectX;
            var rectY      = this.ColorSpaceFacePoints.Min(x => x.Y);
            var rectHeight = this.ColorSpaceFacePoints.Max(x => x.Y) - rectY;

            this.FaceRect = new System.Drawing.Rectangle(rectX, rectY, rectWidth, rectHeight);
        }