Esempio n. 1
0
        public ApiResult <TrainFaceModel> TrainStudentFaceByImageUpload()
        {
            var            r = new ApiResult <TrainFaceModel>();
            TrainFaceModel trainFaceModel = new TrainFaceModel();
            var            httpRequest    = System.Web.HttpContext.Current.Request;

            if (httpRequest.Files.Count < 1)
            {
                r.Messages.Add("Vui lòng upload ảnh");
            }
            else if (httpRequest.Files.Count > 1)
            {
                r.Messages.Add("Vui lòng chỉ uplaod 1 ảnh duy nhât");
            }
            else
            {
                HttpPostedFile file = httpRequest.Files[0];
                byte[]         thePictureAsBytes = new byte[file.ContentLength];
                using (BinaryReader theReader = new BinaryReader(file.InputStream))
                {
                    thePictureAsBytes = theReader.ReadBytes(file.ContentLength);
                }
                trainFaceModel.StudentId   = Int32.Parse(httpRequest.Files.AllKeys[0]);
                trainFaceModel.Base64Image = Convert.ToBase64String(thePictureAsBytes);
                r = RCSService.TrainStudentFace(trainFaceModel);
            }
            return(r);
        }
Esempio n. 2
0
        public ApiResult <TrainFaceModel> TrainStudentFace(TrainFaceModel model)
        {
            var ar      = new ApiResult <TrainFaceModel>();
            var student = RCSContext.Students.Where(s => s.Id == model.StudentId).FirstOrDefault();

            if (student == null)
            {
                ar.IsSuccess = false;
                ar.Messages.Add("Sinh viên không tồn tại.");
            }
            else
            {
                var image     = model.Base64Image.base64ToImage();
                var bitmap    = new Bitmap(image);
                var imageGray = model.Base64Image.base64ToImageGray();
                imageGray._EqualizeHist();
                var rectangles = DetectService.DetectFaceTrain(imageGray);
                if (rectangles.Count() <= 0)
                {
                    ar.IsSuccess = false;
                    ar.Messages.Add("Không nhận diện được khuôn mặt, vui lòng chọn nơi có ánh sáng đầy đủ và điều chỉnh hướng nhìn.");
                    var data = new TrainFaceModel()
                    {
                        Base64Image = Convert.ToBase64String(bitmap.bitmapToByteArr())
                    };
                    ar.Data = data;
                }
                else if (rectangles.Count() == 1)
                {
                    var trainImage  = saveImageTraining(model.StudentId, model.Base64Image, rectangles[0]);
                    var trainModels = new List <TrainModel>();
                    trainModels.Add(new TrainModel
                    {
                        StudentId = trainImage.StudentId,
                        ImageId   = trainImage.FileId,
                        ImageGray = trainImage.FileAttachment.FileData.Data.byteArrToImageGray(),
                    });
                    DetectService.AddTrainModels(trainModels);
                    trainImage.FileAttachment.TrainingImages          = null;
                    trainImage.FileAttachment.FileData.FileAttachment = null;
                    trainImage.Student = null;
                    var data = new TrainFaceModel()
                    {
                        Base64Image = Convert.ToBase64String(drawFaceAndNoteOnBitmap(bitmap, rectangles[0], "", Color.Green).bitmapToByteArr()),
                        StudentId   = trainImage.StudentId,
                        FileId      = trainImage.FileId
                    };
                    ar.Data      = data;
                    ar.IsSuccess = true;
                    ar.Messages.Add("Training thành công.");
                }
                else
                {
                    rectangles.ForEach(r =>
                    {
                        bitmap = drawFaceAndNoteOnBitmap(bitmap, r, "", Color.Red);
                    });
                    var data = new TrainFaceModel()
                    {
                        Base64Image = Convert.ToBase64String(bitmap.bitmapToByteArr())
                    };
                    ar.Data      = data;
                    ar.IsSuccess = false;
                    ar.Messages.Add("Ảnh training chỉ được có một khuôn mặt.");
                }
            }
            return(ar);
        }
Esempio n. 3
0
 public ApiResult <TrainFaceModel> TrainStudentFace(TrainFaceModel model)
 {
     return(RCSService.TrainStudentFace(model));
 }