public void EigenObjectRecognitionProcessorSucessfullyRecognizesMe() { var faces = new List <EigenObjectTargetFace>(); foreach (var trainingImage in Directory.GetFiles(".", "train*.*")) { faces.Add(new EigenObjectTargetFace { Key = trainingImage, Image = new Bitmap(trainingImage) }); } var processor = new EigenObjectRecognitionProcessor(faces); var recoResult = RunFacialRecognitionProcessor(processor); Assert.AreEqual(1, recoResult.Faces.Count()); var face = recoResult.Faces.First(); var eoResult = (EigenObjectRecognitionProcessorResult)face.ProcessorResults.First(); Assert.AreEqual(789.3967, Math.Round(eoResult.EigenDistance, 4)); Assert.AreEqual(@".\train_mike_2.png", eoResult.Key); Assert.IsNotNull(eoResult.GrayFace); }
public void EigenObjectRecognitionProcessorStillReturnsInfoIfNoTrainingImages() { var processor = new EigenObjectRecognitionProcessor(); var recoResult = RunFacialRecognitionProcessor(processor); Assert.AreEqual(1, recoResult.Faces.Count()); var face = recoResult.Faces.First(); var eoResult = (EigenObjectRecognitionProcessorResult)face.ProcessorResults.First(); Assert.AreEqual(-1, eoResult.EigenDistance); Assert.IsNull(eoResult.Key); Assert.IsNotNull(eoResult.GrayFace); }
public void EigenObjectRecognitionProcessorThrowsExceptionIfOnlyOneTrainingImage() { var faces = new List <EigenObjectTargetFace>(); var trainingImage = Directory.GetFiles(".", "train*.*").First(); faces.Add(new EigenObjectTargetFace { Key = trainingImage, Image = new Bitmap(trainingImage) }); var processor = new EigenObjectRecognitionProcessor(faces); RunFacialRecognitionProcessor(processor); }
private RecognitionResult RunFacialRecognitionProcessor(EigenObjectRecognitionProcessor processor) { var testFrame = new Bitmap("testframe.png"); var recoResult = new RecognitionResult { OriginalBitmap = testFrame, ProcessedBitmap = (Bitmap)testFrame.Clone() }; var trackingResults = Newtonsoft.Json.JsonConvert.DeserializeObject <KinectFaceTrackingResult>(File.ReadAllText("testframe.json")); var sw = new Stopwatch(); sw.Start(); processor.Process(recoResult, trackingResults); sw.Stop(); return(recoResult); }