Python获取.ply 3d点云模型的8个角点

Python获取.ply 3d点云模型的8个角点

最近在复现微软的singleshotpose算法,但是小组用intel REALSENSE采集的样本用meshlab做的网格模型效果不太好,无法达到论文的效果,所以打算计算3d点云的八个角点代替原算法计算网格的8个角点的方法,就有了下面这部分代码

代码

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
# 点云文件路径
file_path = 'LINEMOD/milk/milk.ply'
# 打开文件
f = open(file_path, 'r')
# 读取点云数据
content = f.read()
# 关闭文件
f.close()
# 字符替换
lines = content.replace('\n', ',')
# 字符分割
lines = lines.split(',')
# 获取配置信息结束标识符end_header的行索引
config_final_index = lines.index("end_header") + 1
# 删除前面的配置信息
del lines[0:config_final_index]
lines.pop()
# 获取点云数据集合
x = []
y = []
z = []
np_points = np.array(lines)
for i in range(0, len(lines)):
    info_groups = lines[i].split(' ')
    # 排除网格信息
    if len(info_groups) == 5:
    	break
    x.append(info_groups[0])
    y.append(info_groups[1])
    z.append(info_groups[2])
container = [x, y, z]
np_points = np.array(container).astype(float)
# 计算8个角点
min_x = np.min(np_points[0,:])
max_x = np.max(np_points[0,:])
min_y = np.min(np_points[1,:])
max_y = np.max(np_points[1,:])
min_z = np.min(np_points[2,:])
max_z = np.max(np_points[2,:])
corners = np.array([[min_x, min_y, min_z],
                    [min_x, min_y, max_z],
                    [min_x, max_y, min_z],
                    [min_x, max_y, max_z],
                    [max_x, min_y, min_z],
                    [max_x, min_y, max_z],
                    [max_x, max_y, min_z],
                    [max_x, max_y, max_z]])
print(corners)
# 3d显示效果
fig = plt.figure()
ax = plt.subplot(111, projection='3d')
for item in corners:
    ax.scatter(float(item[0]), float(item[1]), float(item[2]), c='r')
ax.set_zlabel('Z')
ax.set_ylabel('Y')
ax.set_xlabel('X')
plt.show()

运行效果

运行效果

评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Alex-Leung

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值