25 lines
650 B
Python
25 lines
650 B
Python
import matplotlib.pyplot as plt
|
|
import numpy as np
|
|
import open3d as o3d
|
|
|
|
|
|
def main():
|
|
cloud_file = "1636465097.pcd"
|
|
|
|
# eps, min_points = 0.02, 10
|
|
eps, min_points = 0.01, 8
|
|
|
|
cloud = o3d.io.read_point_cloud(cloud_file)
|
|
|
|
labels = np.array(cloud.cluster_dbscan(eps=eps, min_points=min_points))
|
|
max_label = labels.max()
|
|
print(f"point cloud has {max_label + 1} clusters")
|
|
colors = plt.get_cmap("tab20")(labels / (max_label if max_label > 0 else 1))
|
|
colors[labels < 0] = 0
|
|
cloud.colors = o3d.utility.Vector3dVector(colors[:, :3])
|
|
o3d.visualization.draw_geometries([cloud])
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|