【ROS】mp4转rosbag

前言

工作中遇到域控中无中间件,无法采用rosbag等中间件的形式同时采集感知结果与视频流,只能通过外接摄像头采集视频流,以及使用can报文或者bin文件形式存储路测数据;导致本地回放时,无法通过视频流观察真实情况,来判断优化方向。于是,另辟蹊径,将工程代码转成ros方式以及将视频流转成rosbag,可同时使用rviz分析算法与image定位问题;

注意事项

1.需要使用python2

代码

复制代码
import time, sys, os
from ros import rosbag
import roslib, rospy
roslib.load_manifest('sensor_msgs')
from sensor_msgs.msg import Image
import argparse
from cv_bridge import CvBridge
import cv2


TOPIC = "/image_viz" # 对应topic_name
def CreateVideoBag(videopath, bagname):
    '''Creates a bag file with a video file'''
    print("raw mp4 name:",videopath)
    print("output bag name:",bagname)
    bag = rosbag.Bag(bagname, 'w')
    cap = cv2.VideoCapture(videopath)
    cb = CvBridge()
    prop_fps = cap.get(cv2.CAP_PROP_FPS)  
    if prop_fps != prop_fps or prop_fps <= 1e-2:
        print("Warning: can't get FPS. Assuming 24.")
        prop_fps = 24
    prop_fps = 24 # 
    print("set fps:",prop_fps)
    ret = True
    frame_id = 0
    while(ret):
        ret, frame = cap.read()
        if not ret:
            break
        stamp = rospy.rostime.Time.from_sec(float(frame_id) / prop_fps)
        frame_id += 1
        image = cb.cv2_to_imgmsg(frame, encoding='bgr8')
        image.header.stamp = stamp
        image.header.frame_id = "base_link"
        bag.write(TOPIC, image, stamp)
    cap.release()
    bag.close()

if __name__ == "__main__":
    # parser = argparse.ArgumentParser()
    # parser.add_argument("--topic", type=str, default="/image_viz")
    # args = parser.parse_args()
    if len( sys.argv ) == 3:
        CreateVideoBag(*sys.argv[1:])
    else:
        print( "Usage: video2bag videofilename bagfilename")

步骤

python2 mp4_to_bag.py <video_name>.mp4 <output_bag_name>.bag # 执行转化命令

rosbag play -l <output_bag_name>.bag camera/image_raw:=image_raw0 # 循环播放图片,并重命名成自己需要的话题名

结果


PS:请注意视频流与算法处理存在些许的时间差。

相关推荐
Zhou1411364 分钟前
MyBatisPlus_02_条件构造器与高级功能
java·开发语言·python
打工仔折腾 AI24 分钟前
网易UU远程实测:手机控电脑做Python开发和Agent调试的真实体验
人工智能·后端·python·智能手机·性能优化·电脑·ai agent 实战
轩轶子29 分钟前
Python CLI Todo:一次数据结构错误引发的 Bug
数据结构·python·bug
“AI国潮设计-小江”32 分钟前
【AIGC实战】Python+SDXL打造潮汕国潮IP:英歌舞麻将的自动化生成与商用思路
开发语言·人工智能·python·prompt·aigc
zh路西法35 分钟前
【上手一只MicroDuck】:(一)从机器人结构到强化学习训练框架
python·强化学习·huggingface·ppo·mujoco·microduck
alphaTao1 小时前
LeetCode 每日一题 2026/9/21-2026/9/27
python·算法·leetcode
计算机源码社2 小时前
【27届大数据毕设】基于Spark的AI艺术创作者价值评估与市场趋势预测研究 基于Python与Spark的AI生成艺术受众画像及异常热度识别可视化平台
大数据·人工智能·hadoop·python·spark·毕业设计·课程设计
huisheng_qaq3 小时前
【Python基础篇-04】深入理解python的函数、参数与作用域
python·ai·函数·参数作用域
宸津-代码粉碎机8 小时前
OpenAI 连夜迎战 Grok Bot 和 Muse:AI 智能体从 “会聊天” 到 “能办事”,现在入场还来得及吗
java·大数据·人工智能·分布式·python
Y3815326628 小时前
SERP API 计费口径:credits_charged、执行失败扣费与退款边界
python·搜索引擎