/// <summary> /// Saves the trained Eigen Recogniser to specified location /// </summary> /// <param name="filename"></param> public void Save_Eigen_Recogniser(string filename) { recognizer.Save(filename); //save label data as this isn't saved with the network string direct = Path.GetDirectoryName(filename); FileStream Label_Data = File.OpenWrite(direct + "/Labels.xml"); using (XmlWriter writer = XmlWriter.Create(Label_Data)) { writer.WriteStartDocument(); writer.WriteStartElement("Labels_For_Recognizer_sequential"); for (int i = 0; i < Names_List.Count; i++) { writer.WriteStartElement("LABEL"); writer.WriteElementString("POS", i.ToString()); writer.WriteElementString("NAME", Names_List[i]); writer.WriteEndElement(); } writer.WriteEndElement(); writer.WriteEndDocument(); } Label_Data.Close(); }
public bool TrainRecognizer() { var allFaces = _dataStoreAccess.CallFaces("ALL_USERS"); if (allFaces != null) { var faceImages = new Image <Gray, byte> [allFaces.Count]; var faceLabels = new int[allFaces.Count]; for (int i = 0; i < allFaces.Count; i++) { Stream stream = new MemoryStream(); stream.Write(allFaces[i].Image, 0, allFaces[i].Image.Length); var faceImage = new Image <Gray, byte>(new Bitmap(stream)); faceImages[i] = faceImage.Resize(200, 200, Inter.Cubic); faceLabels[i] = allFaces[i].UserId; } _faceRecognizer.Train(faceImages, faceLabels); _faceRecognizer.Save(_recognizerFilePath); } return(true); }