Beispiel #1
0
 public RCSService() : base()
 {
     if (!isFirstTrained)
     {
         var trainModels = getAllTrainModel();
         if (trainModels.Count > 0)
         {
             DetectService.AddTrainModels(trainModels);
             isFirstTrained = true;
         }
     }
 }
Beispiel #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);
        }