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