Передача изображений OpenCV в ffmpeg: переменные результаты - PullRequest
0 голосов
/ 29 ноября 2018

Я пытаюсь передать изображения OpenCV в ffmpeg.Я получил ffmpeg для обработки необработанных кадров из OpenCV, но вывод прерывистый и показывает только часть каждого кадра.Мой код выглядит следующим образом:

#include "opencv2/opencv.hpp"
#include <iostream>
#include <unistd.h>
#include <string.h>

using namespace cv;
using namespace std;

VideoCapture vcap(0);

int main(int argc, char** argv) {
  try {
    if (!vcap.isOpened()) {
      cout << "Cannot open video stream. Exiting." << endl;
      return -1;
    } else {
      vcap.set(CV_CAP_PROP_FPS, 25);
    }

    string stream_window = "Current Output Stream";
    namedWindow(stream_window, CV_WINDOW_AUTOSIZE);

    Mat frame;

    while (1) {
      vcap >> frame;

      vector<uchar> buf;

      /// Showing the result
      buf.assign(frame.datastart, frame.dataend);
      for (auto itr = buf.begin(); itr != buf.end(); ++itr) {
        cout << *itr;
      }
      cout << endl;
      imshow(stream_window, frame);

      if(waitKey(4) == 27) break;
    }
  } catch (exception& e) {
    cout << "Exception: " << endl << e.what();
  }

  return 0;
}

Результат передается в ffmpeg с помощью

./stream.out | ffmpeg -f rawvideo -pixel_format bgr24 -video_size 640x480 -r 25 -i pipe: vid.mp4

Что-то не так с командой ffmpeg или есть лучший способ передачи данныхв ffmpeg?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...