栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

用Python3提取rosbag中的图像及时间戳

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

用Python3提取rosbag中的图像及时间戳

用Python3提取rosbag中的图像及时间戳
  • 环境
  • 代码

环境

体验下来最麻烦的就是环境配置,因为我默认的是python 3.9, 发现运行之后没有报错,但是也没有生成任何结果。
然后我就开始怀疑是我ros的问题?因为好像说ros只能兼容python2,我就先尝试切换到python2,但是发现opencv又装不上(这个应该是我自己的问题,因为我看到有人使用python2安装了opencv能处理处理出结果的)
后来看到opencv2只支持到python3.6(但是我不知道为啥,我在3.9也装上了opencv2),就切到了3.6,然后又重新安装了一堆库就可以了。

python3.6
opencv_python4.5.5.64
py3rosmsgs
1.18.1

代码
#coding:utf-8

import roslib;
import rosbag
import rospy
import cv2
from sensor_msgs.msg import Image
from cv_bridge import CvBridge
from cv_bridge import CvBridgeError

path='/home/sczone/raw_data/0214_new/robosense/2022-02-14-10-50-50/back_right_camera/' #存放图片的位置
class ImageCreator():
   def __init__(self):
       self.bridge = CvBridge()
       top_lst = []
       with rosbag.Bag('/home/sczone/raw_data/0214_new/robosense/2022-02-14-10-50-50/2022-02-14-10-50-50.bag', 'r') as bag:   #要读取的bag文件;
           for topic,msg,t in bag.read_messages():
               if topic == "/rs/back_right_camera/compressed": # 图片topic的名字
                   cv_image = self.bridge.compressed_imgmsg_to_cv2(msg) # 因为topic是compressed格式的,所以用compressed_imgmsg_to_cv2
                   timestr = "%.6f" % msg.header.stamp.to_sec() # 时间戳格式转换
                   image_name = timestr + ".png"
                   # cv2.imwrite(path + image_name, cv_image)  # 保存;


if __name__ == '__main__':

   try:
       image_creator = ImageCreator()
   except rospy.ROSInterruptException:
       pass
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/846681.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号