/// <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;
            }
        }