Запись в фиктивный поток видео с использованием OpenCV

Я использую библиотеки OpenCV и v4l2loopback для эмуляции видеоустройств:

modprobe v4l2loopback devices=2

Затем я проверяю, какие устройства у меня есть:

root@blah:~$ v4l2-ctl --list-devices
Dummy video device (0x0000) (platform:v4l2loopback-000):
        /dev/video1

Dummy video device (0x0001) (platform:v4l2loopback-001):
        /dev/video2

XI100DUSB-SDI (usb-0000:00:14.0-9):
        /dev/video0

video0 - это моя настоящая камера, с которой я беру кадры, затем я планирую обработать их через OpenCV и записать их в video2 (я считаю, что это приемник).

Вот как я пытаюсь это сделать:

  int width = 320;
  int height = 240;
  Mat frame(height, width, CVX_8UC3, Scalar(0, 0, 255));
  cvtColor(frame, frame, CVX_BGR2YUV);

  int fourcc = CVX_FOURCC('Y', 'U', 'Y', '2');
  cout << "Trying to open video for write: " << FLAGS_out_video << endl;
  VideoWriter outputVideo = VideoWriter(
      FLAGS_out_video, fourcc, 30, frame.size());
  if (!outputVideo.isOpened()) {
    cerr << "Could not open the output video for write: " << FLAGS_out_video
         << endl;
  }

Насколько я знаю формат вывода видео должен быть YUYV (что равно YUY2 в OpenCV). Пожалуйста, поправьте меня, если я ошибаюсь. В моем коде я не пишу в outputVideo что-нибудь еще, просто пытаюсь открыть его для записи, но я продолжаю получать outputVideo.isOpened()==false по какой-то причине никаких дополнительных ошибок / информации в выводе нет:

root@blah:~$ main --uid='' --in_video='0' --out_video='/dev/video2'
Trying to open video for write: /dev/video2
Could not open the output video for write: /dev/video2

Буду признателен за любые советы или помощь в том, как отладить / решить эту проблему. Заранее спасибо!

0 ответов

Другие вопросы по тегам