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); } }
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"); }
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(); } }
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); } }
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; }