分层存储的图片的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)

持续更新

相关推荐
杀生丸学AI18 小时前
【稀疏重建】StructSplat:基于非校准稀疏视图的可泛化3DGS
深度学习·3d·音视频·transformer·三维重建·空间智能
蓝速科技1 天前
蓝速科技 3D 全息舱 AI 数字人一体机全尺寸选型实测指南
人工智能·科技·3d
雨田哥2 天前
3D 数字人的成长养成记
3d·数字人·3d数字人·陪伴·数伴·成长养成·3d数伴
天空之城--2 天前
Claude Code 高效开发 Web 2D/3D 完全指南:心法、自定义 Skill 体系与社区技能包实战
前端·3d
清风笑烟语3 天前
rustfs 集群部署
3d
还是大剑师兰特3 天前
Unity 从零搭建简易3D场景(新手分步教程)
3d·unity·游戏引擎
EQ-雪梨蛋花汤3 天前
Android 3D 开发教程(三):Sceneform-EQR 配置 PBR 材质、光照、相机与实时阴影
android·3d·材质
弈语道破AI3 天前
3D渲染不再熬时间!即梦 Seedance 2.5 具备3D白模渲染功能的AI视频生成工具
人工智能·3d·音视频
答案—answer4 天前
VibeCoding 能做到什么程度?我用它做了一座 3D 数字博物馆
3d·ai编程·threejs·vibecoding
3D小将4 天前
3D格式转换之PROE转换为IGS格式技术
3d·格式转换·stl模型·stp模型·迪威模型网