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();
        }
Exemple #3
0
 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);
         }
     });
 }
Exemple #4
0
 static void RecognitionCompletedHandler(ResultClassification result)
 {
     Console.WriteLine(result);
 }
 public void ExistsCompletedHandler(ResultClassification elem)
 {
     CreateResults(elem);
 }
 public void RecognitionCompletedHandler(ResultClassification elem)
 {
     CreateResults(elem);
     AddToDataBase(elem);
 }