/// <summary> /// 训练人脸识别器 /// </summary> /// <param name="type"></param> /// <returns></returns> public TrainedFaceRecognizer SetTrainedFaceRecognizer(FaceRecognizerType type) { try { _trainedFaceRecognizer = new TrainedFaceRecognizer(); _trainedFaceRecognizer.trainedFileList = SetSampleFacesList(); switch (type) { case FaceRecognizerType.EigenFaceRecognizer: _trainedFaceRecognizer.faceRecognizer = new Emgu.CV.Face.EigenFaceRecognizer(80, double.PositiveInfinity); break; case FaceRecognizerType.FisherFaceRecognizer: _trainedFaceRecognizer.faceRecognizer = new Emgu.CV.Face.FisherFaceRecognizer(80, 3500); break; case FaceRecognizerType.LBPHFaceRecognizer: _trainedFaceRecognizer.faceRecognizer = new Emgu.CV.Face.LBPHFaceRecognizer(1, 8, 8, 8, 100); break; } //根据样例图片训练faceRecognizer _trainedFaceRecognizer.faceRecognizer.Train(_trainedFaceRecognizer.trainedFileList.trainedImages, _trainedFaceRecognizer.trainedFileList.trainedLabelOrder); return(_trainedFaceRecognizer); } catch (Exception ex) { throw ex; } }
/// <summary> /// 训练人脸识别器 /// </summary> /// <param name="type"></param> /// <returns></returns> public TrainedFaceRecognizer SetTrainedFaceRecognizer(FaceRecognizerType type) { tfr = new TrainedFaceRecognizer(); tfr.trainedFileList = SetSampleFacesList(); switch (type) { case FaceRecognizerType.EigenFaceRecognizer: tfr.faceRecognizer = new Emgu.CV.Face.EigenFaceRecognizer(80, double.PositiveInfinity); break; case FaceRecognizerType.FisherFaceRecognizer: tfr.faceRecognizer = new Emgu.CV.Face.FisherFaceRecognizer(80, 3500); break; case FaceRecognizerType.LBPHFaceRecognizer: tfr.faceRecognizer = new Emgu.CV.Face.LBPHFaceRecognizer(1, 8, 8, 8, 100); break; } if (tfr.trainedFileList.trainedFileName.Count > 0 || tfr.trainedFileList.trainedImages.Count > 0 || tfr.trainedFileList.trainedLabelOrder.Count > 0) { tfr.faceRecognizer.Train(tfr.trainedFileList.trainedImages.ToArray(), tfr.trainedFileList.trainedLabelOrder.ToArray()); } return(tfr); }