pptk点云可视化

pptk点云可视化

Posted by WW on April 6, 2021

安装jupyterlab 和 pptk

pip install jupyterlab
pip install pptk
pip install matplotlib
python -m pip install -U scikit-image

pptk 在ubuntu20 不显示窗口解决方法

https://github.com/heremaps/pptk/issues/3

cd miniconda3/envs/myenv/lib/python3.7/site-packages/pptk/libs/
mv ./libz.so.1 libz.so.1.old
sudo ln -s /lib/x86_64-linux-gnu/libz.so.1 .

使用pptk

简单例子

颜色需要归一化到[0,1]

import pptk

import numpy as np
xyz = np.random.rand(100, 3)
rgb = np.random.rand(100, 3)
v = pptk.viewer(xyz)
v.clear()
v.load(xyz)
v.set(point_size=0.01)
v.attributes(rgb)
v.reset()
v.close()

复杂例子

import pptk

import numpy as np

class PPTK_VIEWER:
    def __init__(self,point_size=0.001):
        self.xyz = np.random.rand(3, 3)
        self.rgb = np.random.rand(3, 3)
        
        self.V = pptk.viewer(self.xyz)
        self.V.clear()
        self.point_size = point_size
  
        self.lookat = self.V.get("lookat")
        self.phi = self.V.get("phi")
        self.theta = self.V.get("theta")
        self.r = self.V.get("r")
        
        self.lookat = [0.0,0.0,0.0]
        self.phi = -1.57079625
        self.theta = -1.57079625
        self.r = 0.5
        
        self.V.set(lookat = self.lookat) #Camera look-at position
        self.V.set(phi = self.phi) #Camera azimuthal angle (radians)
        self.V.set(theta =self.theta) #Camera elevation angle (radians)
        self.V.set(r = self.r) #Camera distance to look-at point
    def update(self, xyz,rgb):
        self.xyz = xyz
        self.rgb = rgb
        
        self.V.load(xyz)
        self.V.set(point_size=self.point_size,lookat = self.lookat,phi = self.phi,theta =self.theta,r = self.r,show_grid = False)
        self.V.attributes(rgb)
        self.V.wait()
        self.lookat = self.V.get("lookat")
        self.phi = self.V.get("phi")
        self.theta = self.V.get("theta")
        self.r = self.V.get("r")
        selected = self.V.get("selected")
        print("selected: ", selected)