2016-01-09 3 views
1

Я пытаюсь использовать OpenCV для чтения и отображения видеофайла 4K. Та же самая программа, очень простая, показанная в приложении A, отлично работает при отображении 1080 видео, но при обновлении до 4K видео наблюдается заметное отставание.OpenCV и 4K Видео

Очевидно, что в любой операции имеется 16x пикселей.

Теперь я бегу вообще на ПК с отличными характеристиками, встроенной графикой, оперативной памятью 4Gb & i3 Процессор и жесткий диск (не SSD). Я тестировал это на ПК с 8 ГБ оперативной памяти, i5 & SSD, и хотя используется 3.XGb ОЗУ, это, кажется, в основном программа с интенсивным использованием процессора и максимизирует все мои ядра на 100% даже на лучшем ПК.

Мои вопросы: (чтобы сделать этот пост конкретные)

  1. Является ли это что-то, что помогло бы с помощью операций GPU?
  2. Является ли это проблемой, которая будет решена путем обновления до ПК с лучшим процессором? Практически это приложение можно запускать только на i7, так как я не думаю, что мы собираемся покупать серверный CPU ...
  3. Это чертеж на экране или просто чтение его с диска, вызывающего помедленнее?

Если у кого-то есть опыт использования 4K с OpenCV, это также было бы полезной информацией.

Приложение A

int main() 
{ 
    VideoCapture cap(m_selected_video); 
    if (!cap.isOpened()) // check if we succeeded 
    { 
     std:cout << "Video ERROR"; 
    } 

    while (_continue) 
    { 
     Mat window1; 
     cap >> window1; // get a new frame from camera 
     imshow("Window1", window1); 
     if (waitKey(30) >= 0) break; 
    } 
} 
+0

Вы понимаете, что вы ждете 30 миллисекунды на каждой итерации, которые могут работать нормально, если у вас есть небольшое изображение для показа, но не так хорошо, когда ему нужно отображать 16x пикселей по каждому кадру. –

+0

Я не осознал, что ожидаю 30 мс.Однако, понижая это до 1 мс, который, я считаю, является самым низким, вы можете подождать, не делает никакой (заметной) разницы. – GPPK

+0

Можете ли вы воспроизводить видео с помощью VLC или ffplay? – Cornstalks

ответ

0

Ответ на этот вопрос является интересным, но я думаю, что сводится к кодеками или кодирования видео.

Это первое видео, которое я использовал, было this one (хотя, возможно, это была не точная загрузка), которая, похоже, не очень хорошо работает в VLC или OpenCV, но отлично работает в Windows Media Player. Я думаю, это потому, что он закодирован в MPEG AAC Audio.

Я тогда скачал an elysium 4k trailer который закодирован h264 и, кажется, работает нормально как в VLC & OpenCV. поэтому Hooray 4K не является проблемой в OpenCV!

Так что я думал, что это могут быть размеры файлов. Я заплатил за и загрузил 6-минутное видео 4Gb 7Gb. Это отлично работает как в OpenCV & VLC без задержек, даже если вы рисуете его на экране три раза. Это файл .mov, и в настоящее время у меня нет доступа к кодеку (я немного обновляю этот бит).

So TL: DR: Это не файлы или типы контейнеров, которые вызывают проблемы, но, похоже, проблема связана с некоторыми кодеками. Это всего лишь небольшое исследование, и могут быть разные проблемы.

Дополнение: Благодаря помощи кукурузные стебли в комментариях, кто указал, что WMP, возможно, встроенную поддержку GPU и делать какие-либо тестирования в VLC, который был очень полезным

+0

FYI, 'MPEG AAC Audio' - это аудиокодек, а не видеокодек. Этот фейерверк, к которому вы подключились, использует h.264 (говорят, что видеокодек - AVC, что является еще одним способом сказать h.264). VLC может сообщить вам информацию о кодеке, если вы перейдете в [Инструменты -> Информация о носителе -> Сведения о кодеке] (http://superuser.com/questions/348159/vlc-how-do-isse-video-files -информация разрешения кодирования-информационно-е). Или вы можете использовать [mediainfo] (https://mediaarea.net/en/MediaInfo). – Cornstalks

+0

Вот откуда я его получил ... Хм, я проверю это. Я постараюсь, по крайней мере, удостовериться, что информация над нами актуальна для любых будущих поисков – GPPK

Смежные вопросы