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

Python : rosbag导出图像和点云

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

Python : rosbag导出图像和点云

图像导出 1.首先到放置bag包的文件夹下,查看bag包中录制的topic
rosbag info xxx.bag

可以看到最后一个  topic  就是相机数据,需要注意后面的的类型,如果是 sensor 类型就可以直接用命令行进行解析,如果是  compressed ,就需要用脚本来解析出图片

sensor 原始数据命令直接解析:

1.  调整到你需要存储图片的文件夹中,或者新建文件夹,执行以下命令,其中<>中为你的topic信息,将<>内的内容包括<>修改为想要转换的topic名字。

rosrun image_view extract_images _sec_per_frame:=0.05 image:=

2.  新建一个终端,输入以下命令,打开ROS:

roscore

3.  在存放bag文件夹的目录下新建一个终端,并输入以下命令,就可以在2中创建的终端中看到图像的转化进度了。

rosbag play -r 0.5 
compressed 压缩数据要用脚本解析:
# coding:utf-8import binascii

import rosbag

import roslib; # roslib.load_manifest(PKG)import rospy

import cv2

from cv_bridge import CvBridge

from sensor_msgs.msg import Image

path = '/home/dell/data3/labelme_data/dataset/image/data/104_lidar/out_pcd2/'

bag_file = '/home/dell/data3/labelme_data/dataset/image/data/104_lidar/20220711111816-2577455936-rosslave-104-HQHYD6M010.bag'

bag = rosbag.Bag(bag_file, "r")

bridge = CvBridge()
#此处的节点一次只可以是一个
bag_data = bag.read_messages('/sensor/lidar/middle/point_cloud')

for topic, msg, t in bag_data:

    cv_image = bridge.compressed_imgmsg_to_cv2(msg, "bgr8")

    cv2.imshow("Image window", cv_image)

    # imshow可有可无只是为了检验是否在提取图像,并展示
    timestr = "%.6f" % msg.header.stamp.to_sec()

    # %.6f表示小数点后带有6位,可根据精确度需要修改; 
    image_name = timestr + ".jpg" # 图像命名:时间戳.jpg 
    cv2.imwrite(path+image_name, cv_image) # 保存; 
    cv2.waitKey(3)
点云导出

在bag包的路径下,输入命令

rosrun pcl_ros bag_to_pcd <*.bag>  
后面三个<>括号中对应的分别是  bag包名,提取点云话题,输出文件夹
例如:rosrun pcl_ros bag_to_pcd water3.bag /velodyne_points /home/zbr/bagfile/pcd

参考:

(17条消息) 运用ROS工具从bag文件中导出图像_学习记录llll的博客-CSDN博客

当前文档32条主题 共436字

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1018794.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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