private Image Add_Beard(Image Display_Image, ProjectOxford.Face.Contract.Face face)
        {
            //
            Image  rabbit_Image = Image.FromFile("F:\\study\\Project\\New pj\\Cognitive-Face-Windows\\Data\\taitho.png");
            double x1           = face.FaceLandmarks.EyeLeftTop.X;
            double x2           = face.FaceLandmarks.EyeRightTop.X;
            double y1           = face.FaceLandmarks.EyeLeftTop.Y;
            double y2           = face.FaceLandmarks.EyeRightTop.Y;
            double ab           = y2 - y1;
            double ac           = x2 - x1;
            double bc           = Math.Sqrt(ab * ab + ac * ac);
            double tanACB       = ab / ac;
            var    deg          = Math.Atan(tanACB) * 180 / Math.PI;
            var    RabbitWidth  = bc;
            double scale        = RabbitWidth / rabbit_Image.Width;
            double x            = face.FaceLandmarks.EyebrowLeftInner.X;
            double moveY        = (face.FaceLandmarks.EyebrowLeftInner.Y - face.FaceLandmarks.EyebrowRightInner.Y) / 2;
            double y            = face.FaceLandmarks.EyebrowLeftInner.Y - moveY;

            if (deg < 0)
            {
                deg = 360 + deg;
            }



            //Rotate Image
            Image BeardImage_Rotate = rotateImage(rabbit_Image, deg);


            // Resize Glasses Image and save to New_GlassesImage
            Image BeardImage_Resize = ResizeImage(BeardImage_Rotate, scale);


            //MainWindow.Log("GlassesImage_Resize: {0}", GlassesImage_Resize.Width);
            //New_GlassesImage.Save("F:\\study\\Project\\Cognitive-Face-Windows\\Images\\Glasses\\3.png");

            //set toa do dat kinh
            int X = Convert.ToInt32(x - ac / 4);
            int Y = Convert.ToInt32(y - bc * 2.5);

            // merge Glasses to Display_Image
            Display_Image = MergeImage(Display_Image, BeardImage_Resize, X, Y);
            return(Display_Image);
        }
        private Image Add_icon(Image Display_Image, ProjectOxford.Face.Contract.Face face)
        {
            //
            Image  icon_Image = Image.FromFile("F:\\study\\Project\\New pj\\Cognitive-Face-Windows\\Data\\raumeo.png");
            double x1         = face.FaceLandmarks.NoseLeftAlarOutTip.X;
            double x2         = face.FaceLandmarks.NoseRightAlarOutTip.X;
            double y1         = face.FaceLandmarks.NoseLeftAlarOutTip.Y;
            double y2         = face.FaceLandmarks.NoseRightAlarOutTip.Y;
            double ab         = y2 - y1;
            double ac         = x2 - x1;
            double bc         = Math.Sqrt(ab * ab + ac * ac);
            double tanACB     = ab / ac;
            var    deg        = Math.Atan(tanACB) * 180 / Math.PI;
            var    iconWidth  = bc;
            double scale      = iconWidth / icon_Image.Width;
            double x          = face.FaceLandmarks.NoseTip.X;
            double moveY      = (face.FaceLandmarks.NoseRootRight.Y - face.FaceLandmarks.NoseRootLeft.Y) / 2;
            double y          = face.FaceLandmarks.NoseLeftAlarTop.Y - moveY;

            //Rotate Image
            Image iconImage_Rotate = rotateImage(icon_Image, deg);


            // Resize Glasses Image and save to New_GlassesImage
            Image iconImage_Resize = ResizeImage(iconImage_Rotate, scale);


            //MainWindow.Log("GlassesImage_Resize: {0}", GlassesImage_Resize.Width);
            //New_GlassesImage.Save("F:\\study\\Project\\Cognitive-Face-Windows\\Images\\Glasses\\3.png");

            //set toa do dat kinh
            int X = Convert.ToInt32(x - ac * 2.7);
            int Y = Convert.ToInt32(y - bc * 2.5);

            // merge Glasses to Display_Image
            Display_Image = MergeImage(Display_Image, iconImage_Resize, X, Y);

            return(Display_Image);
        }
        /// <summary>
        /// Add Glasses to Image
        /// </summary>
        private Image Add_Glasses(Image Display_Image, ProjectOxford.Face.Contract.Face face)
        {
            //
            Image Glasses_Image = Image.FromFile("F:\\study\\Project\\New pj\\Cognitive-Face-Windows\\Images\\Glasses\\1.png");

            // Get Position Eye Left
            double EyeLeftTop_X    = face.FaceLandmarks.EyeLeftTop.X;       // using
            double EyeLeftTop_Y    = face.FaceLandmarks.EyeLeftTop.Y;
            double EyeLeftBottom_X = face.FaceLandmarks.EyeLeftBottom.X;
            double EyeLeftBottom_Y = face.FaceLandmarks.EyeLeftBottom.Y;
            double EyeLeftInner_X  = face.FaceLandmarks.EyeLeftInner.X;     // using
            double EyeLeftInner_Y  = face.FaceLandmarks.EyeLeftInner.Y;     // using
            double EyeLeftOuter_X  = face.FaceLandmarks.EyeLeftOuter.X;     // using
            double EyeLeftOuter_Y  = face.FaceLandmarks.EyeLeftOuter.Y;

            // Get Position Eye Right
            double EyeRightTop_X    = face.FaceLandmarks.EyeRightTop.X;
            double EyeRightTop_Y    = face.FaceLandmarks.EyeRightTop.Y;
            double EyeRightBottom_X = face.FaceLandmarks.EyeRightBottom.X;
            double EyeRightBottom_Y = face.FaceLandmarks.EyeRightBottom.Y;
            double EyeRightInner_X  = face.FaceLandmarks.EyeRightInner.X;   // using
            double EyeRightInner_Y  = face.FaceLandmarks.EyeRightInner.Y;   // using
            double EyeRightOuter_X  = face.FaceLandmarks.EyeRightOuter.X;   // using
            double EyeRightOuter_Y  = face.FaceLandmarks.EyeRightOuter.Y;

            // Get Width Left eye to Right eye
            double Eyes_Width = Math.Sqrt((EyeRightOuter_X - EyeLeftOuter_X) * (EyeRightOuter_X - EyeLeftOuter_X) + (EyeRightOuter_Y - EyeRightOuter_Y) * (EyeRightOuter_Y - EyeRightOuter_Y));

            // Get Glasses Width = Eyes_Width + EyeRightOuter_X + EyeLeftOuter_X
            double Glasses_Width = Eyes_Width + (EyeRightOuter_X - EyeRightInner_X) + (EyeLeftInner_X - EyeLeftOuter_X);

            // get scale Glasses Width vs Glasses Original
            double ratio = Glasses_Width / Glasses_Image.Width;

            // Lấy Góc quay
            // Cạnh đối và cạnh kề của tam giác Vuông ABC, vuông tại B
            double AC = EyeRightInner_X - EyeLeftInner_X;
            double AB = EyeLeftInner_Y - EyeRightInner_Y;
            // Cạnh huyền = căn tổng bình phương 2 cạnh
            Double BC     = Math.Sqrt(AB * AB + AC * AC);
            double tanACB = AB / AC;
            // Qui đổi radian sang độ
            double angel = Math.Atan(tanACB) * 180 / Math.PI;

            //Rotate Image
            Image GlassesImage_Rotate = rotateImage(Glasses_Image, angel);



            // Resize Glasses Image and save to New_GlassesImage
            Image GlassesImage_Resize = ResizeImage(GlassesImage_Rotate, ratio);

            //set toa do dat kinh
            // avg eye
            double avgEye_X = (EyeLeftInner_X + EyeRightInner_X) / 2;
            double avgEye_Y = Math.Abs((EyeLeftInner_Y + EyeRightInner_Y) / 2);

            //Toa do dat kinh
            int X = Convert.ToInt32(avgEye_X - (GlassesImage_Resize.Width / 2));
            int Y = Convert.ToInt32(avgEye_Y - (GlassesImage_Resize.Height / 2));

            // merge Glasses to Display_Image
            Display_Image = MergeImage(Display_Image, GlassesImage_Resize, X, Y);
            return(Display_Image);
        }