Ejemplo n.º 1
0
        private async Task ProcessDeepStackResponseAsync(CameraConfig camera, DeepStackResponse response,
                                                         Image image, CancellationToken cancellationToken)
        {
            if (response.Success)
            {
                var relevantObjects = GetRelevantObjects(camera, response);
                if (!relevantObjects.IsEmpty)
                {
                    _logger.LogDebug(
                        "Detected relevant objects {objects}",
                        relevantObjects.Map(o => new { o.Label, o.Confidence }));

                    if (camera.TelegramTrigger != null)
                    {
                        await _telegramService.ProcessTriggerAsync(camera.TelegramTrigger, image, cancellationToken);
                    }

                    await _triggerService.ProcessTriggersAsync(camera, image, cancellationToken);
                }
            }
            else
            {
                _logger.LogWarning("DeepStack did not detect any objects");
            }
        }
Ejemplo n.º 2
0
 private static Seq <DeepStackObject> GetRelevantObjects(CameraConfig camera, DeepStackResponse response)
 {
     return(response.Predictions.ToSeq()
            .Filter(p => camera.RelevantObjects.Contains(p.Label) &&
                    p.Confidence * 100 >= camera.LowerCertainty &&
                    p.Confidence * 100 <= camera.UpperCertainty));
 }
Ejemplo n.º 3
0
        private static void Save_Image_with_Result(string orginal_Filename, DeepStackResponse response, string saved_Filename)
        {
            Bitmap bitmap = (Bitmap)Image.FromFile(orginal_Filename);

            using (Graphics graphics = Graphics.FromImage(bitmap))
            {
                foreach (var predection in response.predictions)
                {
                    Pen pen = new Pen(Brushes.Red);

                    Rectangle rect = new Rectangle(predection.x_min, predection.y_min, predection.x_max - predection.x_min, predection.y_max - predection.y_min);
                    graphics.DrawRectangle(pen, rect);

                    graphics.DrawString(predection.label, new Font("Arial", 16), Brushes.Red, new Point(predection.x_min, predection.y_min));
                }
            }

            Directory.CreateDirectory(Path.GetDirectoryName(saved_Filename));
            bitmap.Save(saved_Filename, ImageFormat.Jpeg);
        }