cv::VideoWriter
的使用,把图片写进video
//注意:输出的视频名称中必须有数字,否则会报错,CAP_IMAGES: can't find starting number (in the name of file):....,可以查看源码,这个错误不查看源码根本就找不到问题所在。
cv::VideoWriter video_writer_;
int frame_count_;
//初始化
if (FLAGS_use_test_mode) {
// int codec = CV_FOURCC('M', 'J', 'P', 'G');
int codec = cv::VideoWriter::fourcc('M', 'J', 'P', 'G');
const std::string output_video_file = FLAGS_camera_name + ".avi"; //视频名称必须包含数字
video_writer_.open(output_video_file, codec, 10, cv::Size(1920, 1080));
if (!video_writer_.isOpened()) {
SERROR << "Can't create output video file: " << output_video_file;
return;
}
}
//当程序运行到这里时,就开始把图片写进video.
if (FLAGS_use_test_mode) {
SRETURN_IF(FLAGS_skip_frame_num <= 0);
if ((frame_count_ < FLAGS_max_save_frame_count * FLAGS_skip_frame_num) &&
((frame_count_ % FLAGS_skip_frame_num) == 0)) {
cv::Mat rgb_img=frame;
if ((rgb_img.cols != 1920) || (rgb_img.rows != 1080)) {
cv::Mat dst_img;
cv::resize(rgb_img, dst_img, cv::Size(1920, 1080), 0, 0,
cv::INTER_NEAREST);
video_writer_.write(dst_img);
} else {
video_writer_.write(rgb_img); //图片写进视频
}
}
if (frame_count_ > FLAGS_max_save_frame_count * FLAGS_skip_frame_num) {
video_writer_.release();
}
++frame_count_;
} // if FLAGS_use_test_mode