Python plot point cloud and max bounding box of point cloud.

# 点云显示
# 外接包围盒显示

import os
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D


def displayPoint(data):
	#解决中文显示问题
	# plt.rcParams['font.sans-serif']=['SimHei']
	# plt.rcParams['axes.unicode_minus'] = False
 
	#散点图参数设置
	fig=plt.figure() 
	ax=Axes3D(fig) 
	ax.set_title('points') 
	ax.scatter3D(data[0], data[1],data[2], c = 'r', marker = '.') 
	ax.set_xlabel('x') 
	ax.set_ylabel('y') 
	ax.set_zlabel('z') 
	plt.show()

def plot_linear_cube(x, y, z, dx, dy, dz, color='red'):
	fig = plt.figure()
	ax = Axes3D(fig)
	xx = [x, x, x+dx, x+dx, x]
	yy = [y, y+dy, y+dy, y, y]
	kwargs = {'alpha': 1, 'color': color}
	ax.plot3D(xx, yy, [z]*5, **kwargs)
	ax.plot3D(xx, yy, [z+dz]*5, **kwargs)
	ax.plot3D([x, x], [y, y], [z, z+dz], **kwargs)
	ax.plot3D([x, x], [y+dy, y+dy], [z, z+dz], **kwargs)
	ax.plot3D([x+dx, x+dx], [y+dy, y+dy], [z, z+dz], **kwargs)
	ax.plot3D([x+dx, x+dx], [y, y], [z, z+dz], **kwargs)
	plt.title('Cube')
	plt.show()

def plot_BBOX_point(data, x, y, z, dx, dy, dz, color='red'):
	fig=plt.figure() 
	ax=Axes3D(fig) 
	ax.set_title('points&cube') 
	ax.scatter3D(data[0], data[1],data[2], c = 'r', marker = '.') 
	ax.set_xlabel('x') 
	ax.set_ylabel('y') 
	ax.set_zlabel('z') 

	xx = [x, x, x+dx, x+dx, x]
	yy = [y, y+dy, y+dy, y, y]
	kwargs = {'alpha': 1, 'color': color}
	ax.plot3D(xx, yy, [z]*5, **kwargs)
	ax.plot3D(xx, yy, [z+dz]*5, **kwargs)
	ax.plot3D([x, x], [y, y], [z, z+dz], **kwargs)
	ax.plot3D([x, x], [y+dy, y+dy], [z, z+dz], **kwargs)
	ax.plot3D([x+dx, x+dx], [y+dy, y+dy], [z, z+dz], **kwargs)
	ax.plot3D([x+dx, x+dx], [y, y], [z, z+dz], **kwargs)
	plt.show()

def main():
	data = []
	xlist = []
	ylist = []
	zlist = []
	with open('./test_1_inliers.txt', 'r') as f:
		lines = f.readlines()
		for line in lines:
			x,y,z = [float(i) for i in line.split(' ')]
			xlist.append(x)
			ylist.append(y)
			zlist.append(z)
	f.close()

	data.append(xlist)
	data.append(ylist)
	data.append(zlist)

	xmin = min(xlist)
	xmax = max(xlist)
	ymin = min(ylist)
	ymax = max(ylist)
	zmin = min(zlist)
	zmax = max(zlist)

	dx = xmax - xmin
	dy = ymax - ymin
	dz = zmax - zmin
	
	# plot_linear_cube(xmin, ymin, zmin, dx, dy, dz, color='red')
	# displayPoint(data)
	plot_BBOX_point(data, xmin, ymin, zmin, dx, dy, dz, color='red')

if __name__ == '__main__':
	main()

                 

点云的绘制也可以用python-pcl中的visualization.py。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值