Jump to content
Compvision.ru
Sign in to follow this  
19andrew91

Запись видео из исходных данных

Recommended Posts

Здравствуйте. Передо мной поставлена задача экспортировать данные полученные от датчиков в формат mp4. Я изучил материла по теме и понял что для этого достаточно циклически записывать кадры через VideoWriter. Но при этом на выходе оказывается пустой файл. 

  cv::VideoWriter out;
  int FPS = 10;
  out.open("output_vid.mp4",cv::VideoWriter::fourcc('m','p','4','v'), FPS, cv::Size(800, 600));
  Mat data, image;
  if (datafile.isopen())
  {
     while(!datafile.atEnd())
     {
       ...
       data.create(height, width, CV_8UC4); //разрешение 800*600
       data.convertTo(image, CV_8UC3, 1, 0); //UPD: При конвертации число каналов не меняется. 
       out.write(image);
     }
  }
  out.release();

Операция конвертации была добавлена в результате сравнивая в режиме отладки с кодом туториала. В нем матрица имеет тип CV_8UC3

while (inputVideo.isOpened())
    {
        Mat frame;
        bool bSuccess = inputVideo.read(frame); 
        if (bSuccess == false) break;
        out.write(frame);
    }

Что еще нужно учесть? Или это изначально нерабочий вариант и нужно действовать через двойную конвертацию И собирать Mp4 из JPG изображений?

Разобрался. Неправильно производил конвертацию. 

Mat data(800, 600, CV_8UC4);
Mat data_exp(800, 600, CV_8UC3);
cvtColor(data, data_exp,  cv::COLOR_RGBA2RGB );

 

Edited by 19andrew91
Нашел решение и добавил его в пост. Вопрос закрыт.

Share this post


Link to post
Share on other sites

Может быть из-за кодеков. Поставьте, например K-Lite Mega codec pack.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×