/// <summary> /// Загрузка одного кадра (с изображения) /// </summary> /// <param name="data">Информация о кадре</param> /// <returns>Кадр</returns> public Task<GreyVideoFrame> LoadFrameAsync(object data) { try { if (data == null) throw new ArgumentNullException("Null data in LoadFrameAsync"); IOData ioData = (IOData)data; string frameFileName = ioData.FileName; if (frameFileName == null || frameFileName.Length == 0) throw new ArgumentNullException("Null frameFileName in LoadFrameAsync"); if (ioData.FrameHeight <= 0) throw new ArgumentException("Error frameHeight value in LoadFrameAsync"); if (ioData.FrameWidth <= 0) throw new ArgumentException("Error frameWidth value in LoadFrameAsync"); return Task.Run(() => { Size size = new Size(ioData.FrameWidth, ioData.FrameHeight); Bitmap bitmapFrame = new Bitmap(frameFileName); // bitmapFrame.SetResolution(ioData.FrameWidth, ioData.FrameHeight); BitmapConvertor bitmapConvertor = new BitmapConvertor(); GreyVideoFrame greyVideoFrame = new GreyVideoFrame(); greyVideoFrame.Frame = bitmapConvertor.ToGreyImage(bitmapFrame); return greyVideoFrame; }); } catch (Exception exception) { throw exception; } }
/// <summary> /// Добавление ключевого кадра в список ключевых кадров /// </summary> /// <param name="keyFrames">Список клбючевых кадров</param> /// <param name="frame">Ключевой кадр</param> /// <param name="frameFileName">Имя файла для сохранения ключевого кадра</param> /// <param name="frameNumber">Номер ключевого кадра</param> /// <param name="needProcess">Нуждается ли кадр в обработке</param> private void AddKeyFrameFunction(List<GreyVideoFrame> keyFrames, Image<Gray, Byte> frame, string frameFileName, int frameNumber, bool needProcess) { try { frame.Save(frameFileName); Bitmap bitmapFrame = new Bitmap(frameFileName); GreyVideoFrame keyFrame = new GreyVideoFrame(); keyFrame.FrameNumber = frameNumber; BitmapConvertor bitmapConvertor = new BitmapConvertor(); keyFrame.Frame = bitmapConvertor.ToGreyImage(bitmapFrame); keyFrame.NeedProcess = needProcess; keyFrames.Add(keyFrame); } catch (Exception exception) { throw exception; } }