ffmpeg保存sensor_msgs::msg::Image格式的图片为视频,c++代码
时间: 2023-02-26 17:18:03 浏览: 213
视频中工程代码 class3_38
您可以使用以下代码将sensor_msgs::msg::Image格式的图片保存为视频:
```
#include <ros/ros.h>
#include <image_transport/image_transport.h>
#include <opencv2/highgui/highgui.hpp>
#include <cv_bridge/cv_bridge.h>
int main(int argc, char** argv)
{
ros::init(argc, argv, "image_listener");
ros::NodeHandle nh;
image_transport::ImageTransport it(nh);
image_transport::Subscriber sub = it.subscribe("image_topic", 1, imageCallback);
cv::VideoWriter video("out.avi", CV_FOURCC('M', 'J', 'P', 'G'), 10, cv::Size(640, 480));
ros::spin();
video.release();
}
void imageCallback(const sensor_msgs::ImageConstPtr& msg)
{
cv::Mat image = cv_bridge::toCvShare(msg, "bgr8")->image;
video.write(image);
}
```
该代码使用ROS的图像传输库(image_transport)订阅图像主题,并使用OpenCV的cv::VideoWriter类将图像写入视频文件。此代码将生成一个名为“out.avi”的视频文件,其中图像编码为MJPG格式,每秒帧数为10帧,图像大小为640x480像素。
阅读全文