19andrew91 0 Жалоба Опубликовано December 6, 2023 (изменено) Здравствуйте. Передо мной поставлена задача экспортировать данные полученные от датчиков в формат 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 ); Изменено December 8, 2023 пользователем 19andrew91 Нашел решение и добавил его в пост. Вопрос закрыт. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано December 9, 2023 Может быть из-за кодеков. Поставьте, например K-Lite Mega codec pack. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах