/// <summary> /// Одновременное считывание и обработка кадра видеопотока /// </summary> /// <param name="sWTVideoTextDetection">Детектор текста</param> /// <param name="frameLoader">Загрузчик кадра</param> /// <param name="keyFrameIOInformation">Информация об извлекаемом кадре</param> /// <param name="videoFileName">Имя видеофайла</param> /// <param name="threadsNumber">Число потоков для выделения текста</param> /// <returns></returns> public async static Task LoadDetectTextVideo(SWTVideoTextDetection sWTVideoTextDetection, FrameLoader frameLoader, List<KeyFrameIOInformation> keyFrameIOInformation, string videoFileName, int threadsNumber) { try { if (sWTVideoTextDetection == null) throw new ArgumentNullException("Null sWTVideoTextDetection in LoadDetectTextVideo"); if (frameLoader == null) throw new ArgumentNullException("Null frameLoader in LoadDetectTextVideo"); if (keyFrameIOInformation == null) throw new ArgumentNullException("Null keyFrameIOInformation in LoadDetectTextVideo"); if (videoFileName == null) throw new ArgumentNullException("Null videoFileName in LoadDetectTextVideo"); for (int i = 0; i < keyFrameIOInformation.Count; i++) { GreyVideoFrame frame = await frameLoader.LoadFrameAsync(videoFileName, keyFrameIOInformation[i]); await sWTVideoTextDetection.DetectText(frame, threadsNumber); FrameWasProcessedEvent(frame); } } catch (Exception exception) { throw exception; } }
/// <summary> /// Загрузка единичного кадра видео /// </summary> private async void LoadVideoFrameFunction() { try { OpenFileDialog dialog = new OpenFileDialog(); dialog.Filter = "JPEG Image (.jpg)|*.jpg"; dialog.ShowDialog(); FrameSizeWindow frameSizeWindow = FrameSizeWindow.InitializeFrameSizeWindow(); frameSizeWindow.capitalText.Text = PARAMETERS_SETTING_STRING; frameSizeWindow.ShowDialog(); FrameSizeViewModel frameSizeViewModel = (FrameSizeViewModel)frameSizeWindow.DataContext; IOData ioData = new IOData() { FileName = dialog.FileName, FrameHeight = frameSizeViewModel.FrameHeight, FrameWidth = frameSizeViewModel.FrameWidth }; VideoLoader.frameLoadedEvent += this.LoadingFramesProcessing; VideoLoader videoLoader = new VideoLoader(); FrameLoader frameLoader = new FrameLoader(); videoFrame = await frameLoader.LoadFrameAsync(ioData); OkButtonWindow okButtonWindow = OkButtonWindow.InitializeOkButtonWindow(); okButtonWindow.textInformation.Text = LOAD_FRAME_SUCCESS_STRING; okButtonWindow.capitalText.Text = LOAD_FRAME_STRING; okButtonWindow.ShowDialog(); Bitmap bitmapFrame = new Bitmap(dialog.FileName); BitmapImageConvertor bitmapImageConvertor = new Convertors.BitmapImageConvertor(); this.FrameSource = bitmapImageConvertor.BitmapToBitmapImage(bitmapFrame); this.ProcessedFrameSource = null; this.IsVideoFrameTabSelected = true; this.IsProcessedVideoFramesTabSelected = false; this.IsProcessedVideoFrameTabSelected = false; this.IsVideoTabSelected = false; } catch (Exception exception) { ShowExceptionMessage(exception.Message); } }