Beispiel #1
0
 private void OnImageDetected(VideoRecognitionResult result)
 {
     if (IsDisposed)
     {
         return;
     }
     _incrementValue = (int)(_progressBar.Maximum / result.TotalFrames);
     _pic.Image      = result.ImageBytes.ToImage();
     _videoRecognitionResults.Items.Add(result);
     _progressBar.Increment(_incrementValue);
     if (_videoRecognitionResults.Items.Count > Constants.FrameLimit)
     {
         var validator = new FramesValidator(_videoRecognitionResults.Items);
         if (validator.IsValid)
         {
             _pic.Image = result.AppendBorder();
             if (result.IndexFrame - _videoRecognitionResults.LastFrame > Constants.FrameDifference)
             {
                 _videoRecognitionResults.Counter++;
                 _couplingCounterLabel.Text = _videoRecognitionResults.Counter.ToString();
                 foreach (var item in result.Items)
                 {
                     LogMsg(item, result);
                 }
             }
             _videoRecognitionResults.LastFrame = result.IndexFrame;
         }
         _videoRecognitionResults.Items.RemoveAt(0);
     }
 }
Beispiel #2
0
        private void LogMsg(YoloItem item, VideoRecognitionResult result)
        {
            var msg = new StringBuilder();

            msg.AppendLine("Номер кадра: " + result.IndexFrame);
            msg.AppendLine("Координата центра X: " + item.X);
            msg.AppendLine("Координата центра Y: " + item.Y);
            msg.AppendLine("Ширина: " + item.Width);
            msg.AppendLine("Высота: " + item.Height);
            Logger.WriteLine(msg.ToString());
            _logTxtBx.AppendText(Logger.Messages.Last() + "\r\n");
        }
Beispiel #3
0
        private void ProcThread(string filename, IProgress <VideoRecognitionResult> progress)
        {
            using (var reader = new VideoFileReader())
            {
                reader.Open(filename);
                var indexFrame = 0;

                while (reader.FrameCount - 2 > indexFrame && !_cancellationTokenSource.IsCancellationRequested)
                {
                    var frame = reader.ReadVideoFrame();
                    if (frame == null)
                    {
                        break;
                    }
                    var result = ProcessImage(frame);

                    var report = new VideoRecognitionResult()
                    {
                        ElapsedTime = result.ElapsedTime,
                        FrameRate   = reader.FrameRate.Numerator,
                        ImageBytes  = result.ImageBytes,
                        IndexFrame  = ++indexFrame,
                        Items       = result.Items,
                        TotalFrames = reader.FrameCount
                    };

                    progress.Report(report);                 //todo: Вместо progress сделать event

                    frame.Dispose();
                    if (_cancellationTokenSource.IsCancellationRequested)
                    {
                        break;
                    }
                }

                reader.Close();
                OnVideoClosed();
            }
        }
Beispiel #4
0
 private void OnImageDetected(VideoRecognitionResult result)
 {
     pic.Image = result.ImageBytes.ToImage();
     _videoRecognitionResults.Items.Add(result);
     if (_videoRecognitionResults.Items.Count > 15)
     {
         var validator = new FramesValidator(_videoRecognitionResults.Items);
         if (validator.IsValid)
         {
             pic.Image = result.DrawBorder2Image();
             if (result.IndexFrame - _videoRecognitionResults.LastFrame > 13)
             {
                 _videoRecognitionResults.Counter++;
                 CouplingCounterLabel.Text = _videoRecognitionResults.Counter.ToString();
                 foreach (var item in result.Items)
                 {
                     LogMsg(item, result);
                 }
             }
             _videoRecognitionResults.LastFrame = result.IndexFrame;
         }
         _videoRecognitionResults.Items.RemoveAt(0);
     }
 }
Beispiel #5
0
        public void Read(string filename, IProgress <VideoRecognitionResult> progress)
        {
            IsStarted = true;
            using (var reader = new VideoFileReader())
            {
                reader.Open(filename);
                var indexFrame = 0;

                while (reader.IsOpen)
                {
                    if (IsCanceling)
                    {
                        break;
                    }

                    var frame  = reader.ReadVideoFrame();
                    var result = ImageDetector.Process(frame);

                    var report = new VideoRecognitionResult()
                    {
                        ElapsedTime = result.ElapsedTime,
                        FrameRate   = reader.FrameRate.Numerator,
                        ImageBytes  = result.ImageBytes,
                        IndexFrame  = ++indexFrame,
                        Items       = result.Items
                    };

                    progress.Report(report);                     //todo: Вместо progress сделать event

                    frame.Dispose();
                }

                reader.Close();
            }
            IsStarted = false;
        }