realsense保存的点云pcd文件:rgb值(uint格式)换算成r g b(int格式)的小程序

realsense D435i保存的点云文件xxx.pcd,有时候需要对数据进行处理,发现rgb的TYPE值为U,如下格式:

# .PCD v0.7 - Point Cloud Data file format
VERSION 0.7
FIELDS x y z rgb
SIZE 4 4 4 4
TYPE F F F U
COUNT 1 1 1 1
WIDTH 118294
HEIGHT 1
VIEWPOINT 0 0 0 1 0 0 0
POINTS 118294
DATA ascii
-0.35727233 -0.26075777 0.66200006 9012606
-0.35607648 -0.26115167 0.66300005 9275776
-0.35487542 -0.26154557 0.66400003 9407360
-0.35313725 -0.26154557 0.66400003 9276287
...

TYPE F F F U:其中U是uint,而有时候需要rgb值为分开的r g b值,换算关系如下:

r = int(data/256**2%256)
g = int(data/256%256)
b = int(data%256)

将xxx.pcd改成xxx.txt(ASCII格式是可以直接改为txt格式,可以直接打开),删掉pcd格式部分,只保留数据部分,运行下面程序(注意路径哈):

print('data is processing...')
with open("/home/su/Desktop/data_realsense/pointcloud11.txt","r") as f:
	for line in f.readlines():
		curline=line.strip().split(" ")
		ff=open("/home/su/Desktop/data_realsense/061.txt",'a+')
		if curline[0]=='nan' and curline[1]=='nan' and curline[2]=='nan':
			curline[0]=''
			curline[1]=''
			curline[2]=''
			curline[3]=''
			cur4=''
			cur5=''
			ff.write(curline[0])
			ff.write(curline[1])
			ff.write(curline[2])
			ff.write(curline[3])
			ff.write(cur4)
			ff.write(cur5)
		else:
			ff.write(curline[0]+' ')
			ff.write(curline[1]+' ')
			ff.write(curline[2]+' ')
			curl3=int(int(curline[3])/256**2%256)
			ff.write(str(curl3)+' ')
			curl4=int(int(curline[3])/256%256)
			ff.write(str(curl4)+' ')
			curl5=int(int(curline[3])%256)
			ff.write(str(curl5)+'\n')
			ff.close

因为我的realsense保存的pcd文件中存在nan,可能是超距或者其他问题,所以加进去了nan值判断。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值