Попытка чтения потокового видео с помощью OpenCVSharp4 - PullRequest
0 голосов
/ 21 февраля 2020

Мне просто не везет с этим. Я звоню OpenCvSharp.VideoCapture ("udp: //0.0.0.0: 11111"), чтобы попытаться прочитать видеопоток. Это не работает, и документация, кажется, не поддерживает потоковую передачу.

Я также пытался (без успеха) пытаться захватывать изображения с помощью OpenCvSharp, но я не знаю, как это сделать. Документация для него не показывает никаких признаков того, что это также возможно.

Фрагмент этого здесь:

        var vc = new OpenCvSharp.VideoCapture("udp://0.0.0.0:11111");

        if (!vc.IsOpened())
        {
            vc.Open("udp://0.0.0.0:11111");
        }

        while (true)
        {
            var matImage = new OpenCvSharp.Mat();
            if (vc.Read(matImage))
            {
                try
                {
                    var bmp = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(matImage);
                    using (var ms = new MemoryStream())
                    {
                        var bmpImg = new BitmapImage();
                        bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
                        bmpImg.StreamSource = ms;
                        this.videoFrameImage.Background = new ImageBrush(bmpImg);
                        this.isReadingVideoStream = true;
                    }
                }
                catch
                {
                    // just swallow exception
                }
            }
        }

Перед попыткой OpenCvSharp (что выглядело чрезвычайно многообещающим), я попытался использовать ffmpeg с легким / частичным успехом. Мне удалось выделить кадр из потокового видео в реальном времени и сохранить его в файл. К сожалению, поведение не было последовательным. Иногда это сохраняет изображения, иногда нет. А когда он сохраняет изображения, обычно это всего лишь несколько (хотя видео постоянно транслируется).

Командная строка для этого находится здесь:

ffmpeg.exe -i udp: //0.0.0.0: 11111 -ss 00:00:01 -vframes 1 -q: v 1 -y filename.jpg

Я могу go вернуться к повторной попытке с ffmpeg как я получаю абсолютно никуда с OpenCvSharp. Хотите знать, если кто-нибудь там успешно реализовывал с помощью одного из них (или другим способом)?

* Обновление *

Я нашел набор пакетов Nuget, который делает указать поддержку потокового видео. Это следующие нюансы:

  • OpenCvSharp4
  • OpenCvSharp4. Windows
  • OpenCvSharp4.runtime.win

Но сейчас я сейчас нахожусь возникла ошибка времени выполнения:

Method not found: 'Void OpenCvSharp.VideoCapture..ctor(System.String, OpenCvSharp.VideoCaptureAPIs)'.

Кстати, я просто поднял эту проблему :

...