public void TrainFaceStart(string selectedFaceStr) { int selectedFace = -1; // get index try { selectedFace = int.Parse(selectedFaceStr.Split('_').Last()); } catch (Exception) { return; } // mode train - start Mode = EnMode.TRFStart; FrmMain.ButtonBackColor(); // get info TRFaces.FaceId = QZFaceArr[selectedFace].Id; TRFaces.FaceName = QZFaceArr[selectedFace].Name; TRFaces.TrainNbr = 0; TRFaces.TrainFace = new List <Image <Gray, byte> >(); // open formwebcam FormWebCamOpen(); // open form training //FormTrainOpen(); }
public void TestGroupStart(string selectedGroupStr) { int selectedGroup = -1; // get index try { selectedGroup = int.Parse(selectedGroupStr.Split('_').Last()); } catch (Exception) { return; } // test group QZTGroup = new TGroup(); QZTGroup.TGroupNbr = selectedGroup; // open formwebcam FormWebCamOpen(); // test faces Mode = EnMode.TGStart; FrmMain.ButtonBackColor(); }
public int TrainFaceSave() { // mode none Mode = EnMode.None; FrmMain.ButtonBackColor(); DateTime now = DateTime.Now; int nbr = 0; foreach (var trFace in TRFaces.TrainFace) { try { // save trFace.Save(System.IO.Path.GetFullPath($@"../../Faces/{TRFaces.FaceName}_{TRFaces.FaceId}_{now.Hour}_{now.Minute}_{now.Second}_{++nbr}.bmp")); } catch (Exception) { } } return(nbr); }
public void QuestionStart(string qNbr, string gNbr) { try { // question TQuestion = new TestQuestion(); TQuestion.QGivenAnswerNbr = new int[10]; TQuestion.QGivenAnswerPrevNbr = new int[10]; TQuestion.QGivenAnswerTimeOn = new int[10]; TQuestion.QForceAnswerNbr = new bool[10]; TQuestion.QStopWatch = new Stopwatch(); TQuestion.QStopWatch.Start(); TQuestion.QStopWatchTime = TQuestion.QStopWatch.ElapsedMilliseconds; TQuestion.Step1 = 0; TQuestion.QObjectGiveAnswerTime = 0; TQuestion.ImageAnswerGood = new Image <Bgr, byte>(System.IO.Path.GetFullPath($@"../../Images/AnswerOK.png")); TQuestion.ImageAnswerGood = TQuestion.ImageAnswerGood.Resize(1280, 720, Emgu.CV.CvEnum.Inter.Cubic); TQuestion.ImageAnswerWrong = new Image <Bgr, byte>(System.IO.Path.GetFullPath($@"../../Images/AnswerNOK.png")); TQuestion.ImageAnswerWrong = TQuestion.ImageAnswerWrong.Resize(1280, 720, Emgu.CV.CvEnum.Inter.Cubic); QCommit = new OpenCvShape(QSet); int quesNbr = -1; try { quesNbr = int.Parse(qNbr.Split('_')[1]); } catch (Exception) { } if (quesNbr <= 0) { return; } TQuestion.QNbr = quesNbr; int groupNbr = -1; try { groupNbr = int.Parse(gNbr.Split('_').Last()); } catch (Exception) { } if (groupNbr <= 0) { return; } TQuestion.QGrpNbr = groupNbr; // questiontype TQuestion.QType = (EnQType)QZQuestionArr[TQuestion.QNbr].Type; TQuestion.QType2Counter = 0; // load faces for group QuestionLoadFaces(groupNbr); // set answer to faces var face1Id = QZGroupArr[groupNbr].GFaceIds[1]; var face2Id = QZGroupArr[groupNbr].GFaceIds[2]; var face3Id = QZGroupArr[groupNbr].GFaceIds[3]; // type1 -------------------------------------------------> if (TQuestion.QType == EnQType.ThreeQA) { // answer for face1 Random random = new Random(); var rnbr1 = random.Next(1, 4); // answer to face1 QZFaceArr[face1Id].Answer = rnbr1; if (rnbr1 == 1) { var rnnbr2 = random.Next(1, 3); if (rnnbr2 == 1) { QZFaceArr[face2Id].Answer = 2; QZFaceArr[face3Id].Answer = 3; } else { QZFaceArr[face2Id].Answer = 3; QZFaceArr[face3Id].Answer = 2; } } else if (rnbr1 == 2) { var rnnbr2 = random.Next(1, 3); if (rnnbr2 == 1) { QZFaceArr[face2Id].Answer = 1; QZFaceArr[face3Id].Answer = 3; } else { QZFaceArr[face2Id].Answer = 3; QZFaceArr[face3Id].Answer = 1; } } else if (rnbr1 == 3) { var rnnbr2 = random.Next(1, 3); if (rnnbr2 == 1) { QZFaceArr[face2Id].Answer = 1; QZFaceArr[face3Id].Answer = 2; } else { QZFaceArr[face2Id].Answer = 2; QZFaceArr[face3Id].Answer = 1; } } } // type2 -------------------------------------------------> else if (TQuestion.QType == EnQType.MakeFormation) { QZFaceArr[face1Id].Answer = QZGroupArr[groupNbr].GFaceIds[1]; QZFaceArr[face2Id].Answer = QZGroupArr[groupNbr].GFaceIds[2]; QZFaceArr[face3Id].Answer = QZGroupArr[groupNbr].GFaceIds[3]; } // open formwebcam FormWebCamOpen(); // test question Mode = EnMode.QStart; FrmMain.ButtonBackColor(); } catch (Exception ex) { } }
public void TestFaceStart(string selectedFaceStr) { int selectedFace = -1; // get index try { selectedFace = int.Parse(selectedFaceStr.Split('_').Last()); } catch (Exception) { } // get info TFaces = new QZTestFaces(); try { TFaces.FaceId = QZFaceArr[selectedFace].Id; TFaces.FaceName = QZFaceArr[selectedFace].Name; } catch (Exception) { TFaces.FaceId = -1; TFaces.FaceName = ""; } TFaces.Faces = new List <Image <Gray, byte> >(); TFaces.FaceIds = new List <int>(); // load images string dir = System.IO.Path.GetFullPath($@"../../Faces/"); string[] fileEntries = Directory.GetFiles(dir); foreach (string fileName in fileEntries) { string file = Path.GetFileNameWithoutExtension(fileName); if (((TFaces.FaceId >= 0) && file.StartsWith(TFaces.FaceName)) || (TFaces.FaceId < 0)) { string[] faceParts = file.Split('_'); string faceName = faceParts[0]; int faceId = Convert.ToInt32(faceParts[1]); TFaces.Faces.Add(new Image <Gray, byte>(fileName)); TFaces.FaceIds.Add(faceId); } } // train faces //TFaces.FaceRecognition = new EigenFaceRecognizer(80, double.PositiveInfinity); //TFaces.FaceRecognition = new EigenFaceRecognizer(0, 1.0); TFaces.FaceRecognition = new LBPHFaceRecognizer(); //TFaces.FaceRecognition = new FisherFaceRecognizer(); TFaces.FaceRecognition.Train(TFaces.Faces.ToArray(), TFaces.FaceIds.ToArray()); // open formwebcam FormWebCamOpen(); // test faces Mode = EnMode.TFStart; FrmMain.ButtonBackColor(); }