前言
读取点云ply文件,生成对应的rgb图像、深度图像和灰度图像,从RGB图像和深度图像重建点云
一、ply点云对象生成rgb图像、深度图像和灰度图像
代码如下:
import open3d as o3d
import numpy as np
import cv2
from PIL import Image
point_cloud = o3d.io.read_point_cloud('./data/soldier_vox10_0536.ply')
# 提取点云数据
points = np.asarray(point_cloud.points)
colors = np.asarray(point_cloud.colors)
# 设置RGB图像的分辨率
width = 1024
height = 1024
# 将点云坐标映射到图像坐标
# 点云数据的最大值恰好是1023,如果不是,就需要缩放一下
# scaled_points = (points - min_coord) / (max_coord - min_coord) * 1023
scaled_points = points.astype(int)
# 创建空白RGBD图像
rgbd_image = np.zeros((1024, 1024, 3), dtype=np.uint8)
# 将点云颜色赋值给RGBD图像
rgbd_image[1023 - scaled_points[:, 1], scaled_points[:, 0]] <