private static FaceRecognizer CreateRollCallRecognizer(int RollCallID) { //Tu rollcall ID, tao face recognizer, train //FaceRecognizer FaceRec = new LBPHFaceRecognizer(1, 8, 8, 8, 75); FaceRecognizer FaceRec = new FisherFaceRecognizer(80, RECOGNIZER_THREEHOLD); List <int> StudentIDs = new List <int>(); List <Image <Gray, byte> > StudentImages = new List <Image <Gray, byte> >(); RollCallBusiness RollBO = new RollCallBusiness(); //Load danh sach student cua roll call RollCall RollCall = RollBO.GetRollCallByID(RollCallID); foreach (var Student in RollCall.Students) { foreach (var Image in Student.StudentImages) { //Load ID va anh de train cho bo recognizer StudentIDs.Add(Image.StudentID); String TrainingImagePath = TRAINING_FOLDER_PATH + "/" + Image.ImageLink; Image <Gray, byte> TrainingImage = new Image <Gray, byte>(TrainingImagePath); TrainingImage._EqualizeHist(); StudentImages.Add(TrainingImage); } } FaceRec.Train(StudentImages.ToArray(), StudentIDs.ToArray()); return(FaceRec); }
public ActionResult GetCurrentRollCalls(int InstructorID) { //Nhung mon ma instructor nay dang day, sau nay phai check status, instructor teaching phai them ngay thang RollCallBusiness RollBO = new RollCallBusiness(); var RollCalls = RollBO.GetInstructorCurrentRollCalls(InstructorID); //Mon dang day vao thoi diem dang nhap RollCall CurrentRollCall = null; TimeSpan CurrentTime = DateTime.Now.TimeOfDay; if (RollCalls.Count() > 0) { CurrentRollCall = RollCalls.FirstOrDefault(r => r.StartTime <= CurrentTime && r.EndTime >= CurrentTime); } var RollCallJson = RollCalls.ToList().Select(r => new { rollID = r.RollCallID, subject = r.Subject.FullName, classes = r.Class.ClassName, time = r.StartTime.Equals(new TimeSpan(0, 0, 0)) ? "No Slot" : r.StartTime.ToString(@"hh\:mm") + " - " + r.EndTime.ToString(@"hh\:mm"), date = r.BeginDate.ToString("dd-MM-yyyy") + " to " + r.EndDate.ToString("dd-MM-yyyy"), isCurrent = CurrentRollCall != null && CurrentRollCall == r ? true : false, attendanceDate = r.AttendanceDate().ToString("MM-dd-yyyy") }); return(Json(RollCallJson, JsonRequestBehavior.AllowGet)); }
public ActionResult GetRollCallInfo(int RollCallID) { RollCallBusiness RollBO = new RollCallBusiness(); RollCall rollcall = RollBO.GetRollCallByID(RollCallID); AttendanceBusiness AttenBO = new AttendanceBusiness(); var AttendLog = AttenBO.GetRollCallAttendanceLog(RollCallID); var ReturnLog = AttendLog.Where(log => log.LogDate >= DateTime.Today.AddDays(-1)).ToList();//.OrderByDescending(log => log.LogDate); //Truong hop hom nay la thu 2 if (DateTime.Today.DayOfWeek == DayOfWeek.Monday) { //Tim log thu 6 hoac thu 7 DateTime LastSaturday = DateTime.Today.AddDays(-2); var LastSaturdayLog = AttendLog.FirstOrDefault(log => log.LogDate == LastSaturday); if (LastSaturdayLog != null) { ReturnLog.Add(LastSaturdayLog); } else { DateTime LastFriday = DateTime.Today.AddDays(-3); var LastFridayLog = AttendLog.FirstOrDefault(log => log.LogDate == LastFriday); if (LastFridayLog != null) { ReturnLog.Add(LastFridayLog); } } } var RollJson = new { rollID = rollcall.RollCallID, subject = rollcall.Subject.FullName, classes = rollcall.Class.ClassName, time = rollcall.StartTime.ToString(@"hh\:mm") + " - " + rollcall.EndTime.ToString(@"hh\:mm"), date = rollcall.BeginDate.ToString("dd-MM-yyyy") + " to " + rollcall.EndDate.ToString("dd-MM-yyyy"), studentList = rollcall.Students.Select(st => new { studentID = st.StudentID, studentCode = st.StudentCode, studentName = st.FullName, percentRate = String.Format("{0:0.00}%", AttenBO.GetStudentAbsentRate(st.StudentID, RollCallID)) }), logList = ReturnLog.OrderByDescending(log => log.LogDate).Select(log => new { rollID = log.RollCallID, logID = log.LogID, logDate = log.LogDate.ToString("dd-MM-yyyy"), logPresent = log.StudentAttendances.Count(attend => attend.IsPresent) + "/" + log.RollCall.Students.Count, }), }; return(Json(RollJson, JsonRequestBehavior.AllowGet)); }
public ActionResult RollCallStudentLists(List <int> RollCallIDs) { String FileName = "RollCallStudentList" + "_" + DateTime.Today.ToString("dd-MM-yyyy") + ".xlsx"; RollCallBusiness BO = new RollCallBusiness(); String FilePath = Server.MapPath("~/Content/Temp/" + FileName); BO.CreateStudentLists(RollCallIDs, FilePath); return(File(FilePath, ExcelMimeType, FileName)); }
public StudentController() { RSMEntities db = new RSMEntities(); slFactory = new SelectListFactory(db); ClassBO = new ClassBusiness(db); StuBO = new StudentBusiness(db); AccBO = new AccountBusiness(db); RollBO = new RollCallBusiness(db); ReBO = new RequestBusiness(db); }
public RollCallController() { RSMEntities DB = new RSMEntities(); RollBO = new RollCallBusiness(DB); SlFactory = new SelectListFactory(DB); ClaBO = new ClassBusiness(DB); SubBO = new SubjectBusiness(DB); StuBO = new StudentBusiness(DB); InsBO = new InstructorBusiness(DB); SeBO = new SemesterBusiness(DB); MjBO = new MajorBusiness(DB); }
public ActionResult RollCall(int id) { RollCall RollCall = db.RollCalls.First(r => r.RollCallID == id); String FileName = RollCall.Class.ClassName.Trim() + "_" + RollCall.Subject.ShortName + "_" + DateTime.Today.ToString("dd-MM-yyyy") + ".xlsx"; RollCallBusiness BO = new RollCallBusiness(); String FilePath = Server.MapPath("~/Content/Temp/" + FileName); BO.CreateRollCallReport(id, FilePath); return(File(FilePath, ExcelMimeType, FileName)); }
public ActionResult CheckAttendanceAuto(int RollCallID, List <HttpPostedFileBase> ImageFiles, DateTime?AttendanceDate) { RollCallBusiness RollBO = new RollCallBusiness(); var rollCall = RollBO.GetRollCallByID(RollCallID); List <String> ImagePaths = new List <string>(); foreach (HttpPostedFileBase file in ImageFiles) { //Save file anh xuong String OldPath = Server.MapPath("~/Content/Temp/" + file.FileName); file.SaveAs(OldPath); //Resize file anh, luu vao thu muc log, nho them ngay thang truoc String NewPath = Server.MapPath("~/Content/Log/" + rollCall.Class.ClassName + "_" + rollCall.Subject.ShortName + "_" + file.FileName); FaceBusiness.ResizeImage(OldPath, NewPath); ImagePaths.Add(NewPath); //Nhan dien tung khuon mat trong anh } List <RecognizerResult> Results = FaceBusiness.RecognizeStudentForAttendance(RollCallID, ImagePaths); //Dua result nay cho AttendanceBO xu ly AttendanceBusiness AttenBO = new AttendanceBusiness(); AttendanceLog Log = null; if (AttendanceDate == null) { Log = AttenBO.WriteAttendanceAutoLog(RollCallID, Results); } else { Log = AttenBO.WriteAttendanceAutoLog(RollCallID, Results, AttendanceDate.Value); } //Danh sach sinh vien trong log List <int> StudentIDs = AttenBO.GetStudentIDList(Results); //Lay danh sach sinh vien ton tai trong log StudentBusiness StuBO = new StudentBusiness(); //List<Student> Students = StuBO.Find(stu => StudentIDs.Contains(stu.StudentID)).ToList(); /* * var StudentsJson = Students.ToList().Select(s => new * { * studentID = s.StudentID, * studentCode = s.StudentCode, * studentName = s.FullName * }); */ var StudentsJson = Log.StudentAttendances.Select(sa => new { studentID = sa.StudentID, studentCode = sa.Student.StudentCode, studentName = sa.Student.FullName, isPresent = sa.IsPresent }); return(Json(StudentsJson, JsonRequestBehavior.AllowGet)); }
public StudySessionController() { StuSesBO = new StudySessionBusiness(); RollBO = new RollCallBusiness(); }
public void Execute() { RollCallBusiness RollBO = new RollCallBusiness(); RollBO.SetRollCallStatus(); }
public InstructorController() { InsBO = new InstructorBusiness(); AccBO = new AccountBusiness(); RollBO = new RollCallBusiness(); }
//Tim xem can bao nhiu hinh thi nhan dien du SV static void FindRequiredImageNumber() { Console.WriteLine("Testing begin. Initialize the Recognizer."); Random random = new Random(); //Set cac gia tri int TestRollCallID = 24; int StudentPresent = 17; String TestImageFolderPath = @"C:\Users\Hoang\Documents\Visual Studio 2010\Projects\RollSystemMobile\FaceRecAutomationTesting\More Test\Unknown"; //Tao BO RollCall roll = new RollCallBusiness().GetRollCallByID(TestRollCallID); AttendanceBusiness AttenBO = new AttendanceBusiness(); //Tao 1 mang luu ket qua List <MoreTestSingleResult> FinalResults = new List <MoreTestSingleResult>(); List <RollSystemMobile.Models.RecognizerResult> AllResult = new List <RollSystemMobile.Models.RecognizerResult>(); //Doc toan bo anh trong folder, recognize roi dua vao mang List <String> ImageFiles = Directory.GetFiles(TestImageFolderPath, "*.jpg", SearchOption.TopDirectoryOnly).ToList(); foreach (var FilePath in ImageFiles) { var Result = FaceBusinessForMoreTest.RecognizeStudentForAttendance(TestRollCallID, FilePath); AllResult.Add(Result); Console.WriteLine(FilePath + " processed."); } //Chay test 10000 lan for (int i = 0; i < 10000; i++) { List <RollSystemMobile.Models.RecognizerResult> Results = new List <RollSystemMobile.Models.RecognizerResult>(); int StudentDetected = 0; //Sao chep ra mot mang rieng List <RollSystemMobile.Models.RecognizerResult> AllResultClone = new List <RollSystemMobile.Models.RecognizerResult>(AllResult); List <String> FileUsed = new List <string>(); while (StudentDetected < StudentPresent) { //Lay 1 phan tu ra khoi mang clone int Position = random.Next(AllResultClone.Count); var GetResult = AllResultClone.ElementAt(Position); AllResultClone.Remove(GetResult); FileUsed.Add(GetResult.ImageLink); Results.Add(GetResult); StudentDetected = AttenBO.GetStudentIDList(Results).Count; } MoreTestSingleResult SingleResult = new MoreTestSingleResult(); SingleResult.FileUsed = FileUsed; SingleResult.RunCount = FileUsed.Count; SingleResult.StudentDetected = StudentDetected; FinalResults.Add(SingleResult); Console.WriteLine("Test run: " + i); } FinalResults = FinalResults.OrderBy(rs => rs.RunCount).ToList(); MoreTestSingleResult MinResult = FinalResults.First(); Console.WriteLine("Minimum image required: " + MinResult.RunCount); Console.Write("File Used: "); foreach (var FilePath in MinResult.FileUsed) { Console.WriteLine(Path.GetFileNameWithoutExtension(FilePath) + "|"); } Console.WriteLine(); MoreTestSingleResult MaxResult = FinalResults.Last(); Console.WriteLine("Maximum image required: " + MaxResult.RunCount); Console.WriteLine("File Used: "); foreach (var FilePath in MaxResult.FileUsed) { Console.WriteLine(Path.GetFileNameWithoutExtension(FilePath) + "|"); } Console.WriteLine(); for (int i = MinResult.RunCount; i <= MaxResult.RunCount; i++) { int Times = FinalResults.Count(rs => rs.RunCount == i); Console.WriteLine("Required: " + i + ".Times: " + Times); } double AvgRun = FinalResults.Average(r => r.RunCount); Console.WriteLine("Avarage image required: " + AvgRun); Console.ReadLine(); }
//So luong hinh tang dan, tinh so luong SV detected dc static void FindAvarageStudentDetected() { Random random = new Random(); //Set cac gia tri int TestRollCallID = 24; String TestImageFolderPath = @"C:\Users\Hoang\Documents\Visual Studio 2010\Projects\RollSystemMobile\FaceRecAutomationTesting\More Test\13 After - Copy"; //Tao BO RollCall roll = new RollCallBusiness().GetRollCallByID(TestRollCallID); AttendanceBusiness AttenBO = new AttendanceBusiness(); //Tao 1 mang luu ket qua List <MoreTestSingleResult> FinalResults = new List <MoreTestSingleResult>(); List <RollSystemMobile.Models.RecognizerResult> AllResult = new List <RollSystemMobile.Models.RecognizerResult>(); //Doc toan bo anh trong folder List <String> ImageFiles = Directory.GetFiles(TestImageFolderPath, "*.jpg", SearchOption.TopDirectoryOnly).ToList(); foreach (var FilePath in ImageFiles) { var Result = FaceBusinessForMoreTest.RecognizeStudentForAttendance(TestRollCallID, FilePath); AllResult.Add(Result); Console.WriteLine(FilePath + " processed."); } //So luong hinh tang dan, tu 5 toi max for (int i = 1; i < ImageFiles.Count; i++) { //Chay 1000 lan for (int j = 0; j < 1000; j++) { List <RollSystemMobile.Models.RecognizerResult> Results = new List <RollSystemMobile.Models.RecognizerResult>(); //Sao chep ra mot mang rieng List <RollSystemMobile.Models.RecognizerResult> AllResultClone = new List <RollSystemMobile.Models.RecognizerResult>(AllResult); List <String> FileUsed = new List <string>(); //Lay random i hinh, set result for (int k = 0; k < i; k++) { //Lay 1 phan tu ra khoi mang clone int Position = random.Next(AllResultClone.Count); var GetResult = AllResultClone.ElementAt(Position); AllResultClone.Remove(GetResult); FileUsed.Add(GetResult.ImageLink); Results.Add(GetResult); } MoreTestSingleResult SingleResult = new MoreTestSingleResult(); SingleResult.FileUsed = FileUsed; SingleResult.RunCount = FileUsed.Count; SingleResult.StudentDetected = AttenBO.GetStudentIDList(Results).Count; FinalResults.Add(SingleResult); } } //Bat dau tinh, voi so luong hinh tang dan, trung binh nhan dien dc bao nhieu hs for (int i = 1; i < ImageFiles.Count; i++) { Console.WriteLine("Number of image used: " + i); double AvgStudentDetected = FinalResults.Where(r => r.RunCount == i).Average(r => r.StudentDetected); Console.WriteLine("Average Student Detected: " + AvgStudentDetected); } Console.ReadLine(); }