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