点云数据来源
这个数据集大概4个g左右
visual-pc.py
#point cloud
import numpy as np
import matplotlib.pyplot as plt
import cv2
file = "../**.psd.bin"
#x,y,z就是基于激光雷达的3d坐标系
#intensity,反射强度(指的是,激光接收器接收的次数)
# 不同的物理材质具有不同的反射强度
#ring index,激光有32线,代表的就是1-32的数字
#[x,y,z,intensity,ring index]
pc = np.frombuffer(open(file,"rb").read(),dtyple = np.float32)
#print(pc.reshape(-1,5).tolist())
#一般只需要前4个数,ring index不需要
pc = pc.reshape(-1,5)[:,:4]
pc.tofile("kitti.format.pcd.bin")
print(pc)
x,y,z,intensity = pc.T
print(intensity.max(),intensity.min())
#设置图像尺寸1024x1024
image_size = 1024
#把数据归一化
#点的坐标范围大概在100
pc_range = 100
x = x/pc_range #-1到+1
y = y / pc_range
#缩放到图像大小,并平移到图像中心
half_image_size = image_size / 2
x = x*half_image_size + half_image_size
y = y*half_image_size + half_image_size
#opencv的图像,是可以使用numpy进行创建
image = np.zeros((image_size,image_size,3),np.unit8)
for ix,iy,iz in zip(x,y,z):
ix = int(ix)
iy = int(iy)
#判断是否在图像范围内
if ix>= 0 and ix < image_size and iy >= 0 and iy < image_size:
#调整点云的亮度
alpha = min(1,max(0,(iz /5))
#color = (iv/255)*128+127
color = alpha*128+127
image[iy,ix] = color,color,color
cv.imwrite("points.jpg",image)
#plt.polt(x,y,'b.')
#plt.show()
灰度会有区别
高度亮,低度暗
通过矩阵进行旋转
python 生成 gif
生成动态图
使用工具可视化点云
vscode-pc-viewer
格式不对要进行转换