1.查看某个.bag的数据信息(其中*为.bag文件名)
rosbag info *.bag
2.解析rosbag中的图片
sudo apt-get install mjepgtools
sudo apt-get install ffmpeg
roscore
rosrun image_view extract_images _sec_per_frame:=0.05 image:=<IMAGE TOPIC IN BAGFILE>
#其中<>中为你的topic信息
3.将rosbag分帧为pcd文件
roscore
rosrun pcl_ros bag_to_pcd 包名 话题名 pcd_dir
pcl_viewer pcd_dir/167846782657.34785967568.pcd
2.将pcd文件转为bin格式文件
python pcd2bin.py --pcd_path /media/zcx/Samsung_T5/kitti3d/huituokitti/training/velodyne/ --bin_path /home/zcx/bin/
import os
import numpy as np
import fire
def read_pcd(filepath):
lidar = []
with open(filepath,'r') as f:
line = f.readline().strip()
while line:
linestr = line.split(" ")
if len(linestr) == 4:
linestr_convert = list(map(float, linestr))
lidar.append(linestr_convert)
line = f.readline().strip()
return np.array(lidar)
def convert(pcdfolder, binfolder):
current_path = os.getcwd()
ori_path = os.path.join(current_path, pcdfolder)
file_list = os.listdir(ori_path)
des_path = os.path.join(current_path, binfolder)
if os.path.exists(des_path):
pass
else:
os.makedirs(des_path)
for file in file_list:
(filename,extension) = os.path.splitext(file)
velodyne_file = os.path.join(ori_path, filename) + '.pcd'
pl = read_pcd(velodyne_file)
pl = pl.reshape(-1, 4).astype(np.float32)
velodyne_file_new = os.path.join(des_path, filename) + '.bin'
pl.tofile(velodyne_file_new)
if __name__ == "__main__":
fire.Fire()
版权声明:本文为wotainanlejnhj原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。