可视化点云,并对点云的初步了解

请添加图片描述

https://www.bilibili.com/video/BV1vu41147KS/?spm_id_from=333.788&vd_source=569ef4f891360f2119ace98abae09f3f
在这里插入图片描述
在这里插入图片描述

点云数据来源

nuScenes

在这里插入图片描述这个数据集大概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

在这里插入图片描述
在这里插入图片描述
格式不对要进行转换在这里插入图片描述
在这里插入图片描述在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_44089890/article/details/130642048