Производительность VideoCapture в EmguCV

192
23 июня 2018, 10:40

Проект на C#/WPF.
Я использую EmguCV(3.4.1) для захвата и анализа видео.
Мне необходимо получать 3 rtsp видео потока в h264 1080p 60fps.
Для тестов используется процессор i3-6100 3.7GHz, 8гб оперативки.

Для захвата видео я использую класс VideoCapture. Вот часть кода в которой происходит захват видео:

 Mat fr = new Mat();
 VideoCapture Capture;
 public void StartStream(string Source)
 {
 Capture = new VideoCapture(Source); 
 Capture.ImageGrabbed += Capture_ImageGrabbed;
 Capture.Start();
 }
 private void Capture_ImageGrabbed(object sender, EventArgs e)
 {
 Capture.Retrieve(fr, 3);
  //обработка кадра
 }

Проблема в том, что как только происходит вызов Capture.Start(); нагрузка на процессор увеличивается на 20%.(для одного потока).

Проблема не в Capture_ImageGrabbe, т.к. даже если я не подписываюсь на событие ImageGrabbed, а просто:

Capture = new VideoCapture(Source);
Capture.Start();

Нагрузка сразу возрастает.

В связи с этим вопрос, как можно оптимизировать захват видео?

P.S. У меня нету проблем производительности при отображении на форме или анализе кадров видео.
Если открыть тот же самый rtsp поток в VLC плеере, то нагрузка на процессор не превысит 3-5%.

READ ALSO
Чат на SignalR ASP .NET

Чат на SignalR ASP .NET

Как можно написать чат на WebSocket из MicrosoftAspNet

206
Перепрыгнуть на другой Textbox

Перепрыгнуть на другой Textbox

Как мне сделать, чтобы при вводе в textbox перекидывала на следующий не используя Tab (TabIndex) К примеру через событие Textbox_textChanged

203
Исключения в контроллере FileResult

Исключения в контроллере FileResult

У меня есть метод, который возвращает файл пользователюНо во время выполнения метода возможно исключение

148