public void AddToDataBase(ResultClassification obj) { lock (db) { Avalonia.Media.Imaging.Bitmap BImage = new Avalonia.Media.Imaging.Bitmap(obj._PathImage); Blob ImageBlob = new Blob { Bytes = ImageToByteArray(BImage) }; db.Blobs.Add(ImageBlob); db.SaveChanges(); RecognitionImage elem = new RecognitionImage { Class = obj._ClassImage, Prob = obj.Probability, ImageBytes = ImageBlob, Call = 0, Hash = GetHashFromBytes(ImageToByteArray(BImage)) }; db.Images.Add(elem); db.SaveChanges(); } }
public void ClassificationImages(string currentDirectory) { Classes.Clear(); PathImages = new List <string>(Directory.GetFiles(currentDirectory, "*.jpg")); Thread t = new Thread(() => { foreach (string path in PathImages) { ResultClassification imageDataBase = FindInDataBase(path); if (imageDataBase != null) { ExistsCompletedHandler(imageDataBase); } else { NewPathImages.Enqueue(path); } } task = new ThreadClassification(NewPathImages, onnxModel, RecognitionCompletedHandler); task.Run(); }); t.Start(); }
public void CreateResults(ResultClassification elem) { Dispatcher.UIThread.InvokeAsync(() => { Result.Add(elem); int index = CheckUniqueClass(elem._ClassImage); if (index == -1) { Classes.Add(new Tuple <string, int>(elem._ClassImage, 1)); } else { Classes[index] = new Tuple <string, int>(Classes[index].Item1, Classes[index].Item2 + 1); } }); }
static void RecognitionCompletedHandler(ResultClassification result) { Console.WriteLine(result); }
public void ExistsCompletedHandler(ResultClassification elem) { CreateResults(elem); }
public void RecognitionCompletedHandler(ResultClassification elem) { CreateResults(elem); AddToDataBase(elem); }