深度图 + RGB图像 转点云 python

要将深度图和RGB图像转换为点云,你可以使用OpenCV库和numpy库。以下是一个Python示例代码,展示了如何将深度图和RGB图像转换为3D点云:




import numpy as np
import cv2
import open3d as o3d
 
# 读取深度图和RGB图像
depth_image = cv2.imread("depth.png", cv2.IMREAD_UNCHANGED)
rgb_image = cv2.imread("rgb.jpg")
 
# 获取相机内参(假设为相同的内参矩阵)
fx = 525.0  # 焦距
fy = 525.0
cx = 319.5
cy = 239.5
 
# 深度图转换为距离图
depth_image = depth_image.astype(np.float32) / 65535.0  # 将16位无符号整数转为32位浮点数,并归一化
distance = (1.0 / depth_image) - 1.0  # 深度图转距离图
 
# 创建点云
point_cloud = o3d.geometry.PointCloud()
 
# 遍历深度图像,计算3D坐标
for v in range(depth_image.shape[0]):
    for u in range(depth_image.shape[1]):
        if depth_image[v, u] == 0:
            continue
        z = distance[v, u]
        x = (u - cx) * z / fx
        y = (v - cy) * z / fy
        point_cloud.points.append([x, y, z])
        point_cloud.colors.append(rgb_image[v, u])
 
# 转换点云到o3d格式
point_cloud.estimate_normals()
 
# 可视化点云
o3d.visualization.draw_geometries([point_cloud])

确保你有相机的内参,这些值取决于你使用的相机型号和相机标定结果。depth.pngrgb.jpg 分别是深度图像和RGB图像的文件名,你需要根据你的文件位置进行相应的更改。

这段代码使用了Open3D库来创建和可视化点云。首先,它读取深度图像并将其转换为距离图,然后遍历深度图像中的每个像素,根据相机的内参计算对应的3D坐标,并将颜色信息从RGB图像中提取并添加到点云中。最后,使用Open3D的 estimate_normals() 函数估算点云的法向量,并使用 draw_geometries() 函数显示点云。

最后修改于:2024年08月25日 19:32

评论已关闭

推荐阅读

DDPG 模型解析,附Pytorch完整代码
2024年11月24日
DQN 模型解析,附Pytorch完整代码
2024年11月24日
AIGC实战——Transformer模型
2024年12月01日
Socket TCP 和 UDP 编程基础(Python)
2024年11月30日
python , tcp , udp
如何使用 ChatGPT 进行学术润色?你需要这些指令
2024年12月01日
AI
最新 Python 调用 OpenAi 详细教程实现问答、图像合成、图像理解、语音合成、语音识别(详细教程)
2024年11月24日
ChatGPT 和 DALL·E 2 配合生成故事绘本
2024年12月01日
omegaconf,一个超强的 Python 库!
2024年11月24日
【视觉AIGC识别】误差特征、人脸伪造检测、其他类型假图检测
2024年12月01日
[超级详细]如何在深度学习训练模型过程中使用 GPU 加速
2024年11月29日
Python 物理引擎pymunk最完整教程
2024年11月27日
MediaPipe 人体姿态与手指关键点检测教程
2024年11月27日
深入了解 Taipy:Python 打造 Web 应用的全面教程
2024年11月26日
基于Transformer的时间序列预测模型
2024年11月25日
Python在金融大数据分析中的AI应用(股价分析、量化交易)实战
2024年11月25日
AIGC Gradio系列学习教程之Components
2024年12月01日
Python3 `asyncio` — 异步 I/O,事件循环和并发工具
2024年11月30日
llama-factory SFT系列教程:大模型在自定义数据集 LoRA 训练与部署
2024年12月01日
Python 多线程和多进程用法
2024年11月24日
Python socket详解,全网最全教程
2024年11月27日