python读取点云,使用点云,绘3D图,PCA

import numpy as np
import open3d
from vispy import io
import numpy as np
import os
import mayavi.mlab
mesh=[[[0]*3]*10000]*14
FDI=[17,16,15,14,13,12,11,21,22,23,24,25,26,27];
for i in range(14):
mesh[i]=open3d.io.read_triangle_mesh(‘C:/Users/lixiaohu/Desktop/auto切牙数据/1234567/150451-0/tooth_0_’+str(FDI[i])+’.obj’)
mesh1= open3d.io.read_triangle_mesh(‘C:/Users/lixiaohu/Desktop/101028/101028_l/TOOTH_0.obj’)

V=np.asarray(mesh.vertices)
v=np.mean(V,0)
bb=np.asarray(mesh.triangles)
a=np.random.rand(3,3)
q,r=np.linalg.qr(a)
V1=np.dot(V,q)+[1,2,3]

def pca(X, d):
# Centralization
means = np.mean(X, 0)
X = X - means
# Covariance Matrix
covM = np.dot(X.T, X)
eigval, eigvec = np.linalg.eig(covM)
indexes = np.argsort(eigval)[-d:]
W = eigvec[:, indexes]
return W

X3=pca(V,3)
x = V[:,0]
y = V[:,1]
z = V[:,2]
d = np.sqrt(x ** 2 + y ** 2 + z ** 2) # 距离
fig = mayavi.mlab.figure(bgcolor=(0, 0, 0), size=(640, 480))
mayavi.mlab.triangular_mesh(x, y, z, bb, color=(0.7, 0.7, 0.7))
mayavi.mlab.triangular_mesh(V1[:,0],V1[:,1],V1[:,2], bb, color=(0.7, 0.7, 0.7))
mayavi.mlab.quiver3d(v[0],v[1],v[2],X3[0,0],X3[0,1],X3[0,2], line_width=3,
color=(0, 0, 1), scale_factor=30)
mayavi.mlab.quiver3d(v[0],v[1],v[2],X3[1,0],X3[1,1],X3[1,2], line_width=3,
color=(0, 0, 1), scale_factor=30)
mayavi.mlab.quiver3d(v[0],v[1],v[2],X3[2,0],X3[2,1],X3[2,2], line_width=3,
color=(0, 0, 1), scale_factor=30)
mayavi.mlab.show()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值