分层存储的图片的3d显示

分层存储的图片叠层成为3d,并显示。

文件夹D:\mask内的分层存储的图像文件:

1、显示为3d点云:

python 复制代码
import open3d as o3d
import numpy as np
from PIL import Image


def convert_images_to_point_cloud(image_paths):
    points = []

    for i, image_path in enumerate(image_paths):
        img = Image.open(image_path)
        img_array = np.array(img)

        height, width = img_array.shape        

        for y in range(height):
            for x in range(width):
                if img_array[y][x] > 0:  # 假设非黑色点为感兴趣的点
                    points.append([x, y, i])  # 将 2D 像素点转换为 3D 点,高度使用索引值

    return points

# 替换为你实际存储图像的路径
image_paths = ['D:\\mask\\mask_1.PNG', 'D:\\mask\\mask_2.PNG', 'D:\\mask\\mask_3.PNG', 'D:\\mask\\mask_4.PNG', 'D:\\mask\\mask_5.PNG', 'D:\\mask\\mask_6.PNG', 'D:\\mask\\mask_7.PNG', 'D:\\mask\\mask_8.PNG', 'D:\\mask\\mask_9.PNG', 'D:\\mask\\mask_10.PNG', 'D:\\mask\\mask_11.PNG', 'D:\\mask\\mask_12.PNG']

points = convert_images_to_point_cloud(image_paths)
point_cloud = o3d.geometry.PointCloud()

point_cloud.points = o3d.utility.Vector3dVector(points)
o3d.visualization.draw_geometries([point_cloud])

2、将点云渲染为体素网格

python 复制代码
import open3d as o3d
import numpy as np
from PIL import Image


def convert_images_to_point_cloud(image_paths):
    points = []
    for i, image_path in enumerate(image_paths):
        img = Image.open(image_path)
        img_array = np.array(img)

        height, width = img_array.shape

        for y in range(height):
            for x in range(width):
                if img_array[y][x] > 0:  # 假设非黑色点为感兴趣的点
                    points.append([x, y, i])  # 将 2D 像素点转换为 3D 点,高度使用索引值

    return points

# 替换为你实际存储图像的路径
image_paths = ['D:\\mask\\mask_1.PNG', 'D:\\mask\\mask_2.PNG', 'D:\\mask\\mask_3.PNG', 'D:\\mask\\mask_4.PNG',
               'D:\\mask\\mask_5.PNG', 'D:\\mask\\mask_6.PNG', 'D:\\mask\\mask_7.PNG', 'D:\\mask\\mask_8.PNG',
               'D:\\mask\\mask_9.PNG', 'D:\\mask\\mask_10.PNG', 'D:\\mask\\mask_11.PNG', 'D:\\mask\\mask_12.PNG']

points = convert_images_to_point_cloud(image_paths)

point_cloud = o3d.geometry.PointCloud()
point_cloud.points = o3d.utility.Vector3dVector(points)

# 创建点云体素网格
voxel_size = 1
voxel_grid = o3d.geometry.VoxelGrid.create_from_point_cloud(point_cloud, voxel_size=voxel_size)

# 显示体素网格,指定渲染模式为网格
o3d.visualization.draw_geometries([voxel_grid], mesh_show_wireframe=True)

持续更新

相关推荐
时间的情敌1 天前
Cesium 加载 3D Tiles 倾斜摄影、压平、样式设置(Vue3 实战)
vue.js·3d·cesium
AGI_Eval3 天前
AI 3D生成技术:从“可用”走向“可靠”还有多远?
人工智能·3d
翌日阳4 天前
二十分之一的压缩比:Spatial Vivid 1.0 把 3DGS 全链路参考实现按 MIT 开源了
3d·开源
Dream-Y.ocean4 天前
鸿蒙PC平台宅匠 3D 室内设计适配实战:基于 Electron 壳方案的 Three.js 双渲染引擎与参数化户型编辑器开发
javascript·3d·harmonyos
硕迪科技SOLIDWORKS4 天前
SOLIDWORKS Electrical 2027:从线束定义到2D–3D更改分析
3d·solidworks 202
DolitD4 天前
UE像素流与云渲染技术方案对比分析
3d·云原生·ue5·云计算·图形渲染
tealcwu5 天前
【Unity高级】Unity URP:构建同时支持 2D 与 3D 场景的项目完全指南
3d·unity·游戏引擎
Jmyd01235 天前
文物3D数字化的技术选型指南:从WW/T 0115标准到落地工程,一次讲透采集、建档、管理与展示
3d·系统架构·博物馆·数字展厅·博物馆数字化
Martina_03215 天前
AI生成3D模型一合并网格,材质就串色?用6步检查材质槽、UV与图集重映射
图像处理·人工智能·3d·材质·uv·游戏策划·1024程序员节
鹿野素材屋5 天前
U3D切换场景时候变黑怎么处理
数码相机·3d