las 点云可视化

目录

点云灰色可视化

las 点云彩色可视化


点云灰色可视化

import laspy
import numpy as np
import open3d as o3d


def read_las_to_o3d(filename):
    # 读取 las 文件
    las = laspy.read(filename)

    # 提取坐标数据
    points = np.vstack((las.x, las.y, las.z)).transpose()

    # 创建 Open3D 点云对象
    pcd = o3d.geometry.PointCloud()
    pcd.points = o3d.utility.Vector3dVector(points)

    # 如果有 intensity,可做灰度映射
    if hasattr(las, "intensity"):
        intensity = np.array(las.intensity, dtype=np.float32)
        intensity_normalized = (intensity - intensity.min()) / (intensity.ptp() + 1e-8)
        colors = np.tile(intensity_normalized.reshape(-1, 1), (1, 3))  # 灰度 RGB
        pcd.colors = o3d.utility.Vector3dVector(colors)

    return pcd


# 设置你的 LAS 文件路径
las_file = r"B:\360MoveData\Users\Administrator\Desktop\tmp\1026\las-detect\las-detect\input\street.las"

# 加载并显示
pcd = read_las_to_o3d(las_file)
o3d.visualization.draw_geometries([pcd])

las 点云彩色可视化

import laspy
import numpy as np
import open3d as o3d


def read_colored_las(filename):
    las = laspy.read(filename)
    points = np.vstack((las.x, las.y, las.z)).transpose()

    # 创建点云对象
    pcd = o3d.geometry.PointCloud()
    pcd.points = o3d.utility.Vector3dVector(points)

    # 如果含有 RGB 信息
    if hasattr(las, "red"):
        r = np.array(las.red, dtype=np.float32) / 65535
        g = np.array(las.green, dtype=np.float32) / 65535
        b = np.array(las.blue, dtype=np.float32) / 65535
        colors = np.vstack((r, g, b)).T
        pcd.colors = o3d.utility.Vector3dVector(colors)
    else:
        print("LAS 文件中不包含 RGB 信息,使用灰度或默认颜色")

    return pcd


pcd = read_colored_las(r"B:\360MoveData\Users\Administrator\Desktop\tmp\1026\las-detect\las-detect\input\street.las")
o3d.visualization.draw_geometries([pcd])

你可能感兴趣的:(las 点云可视化)