分层存储的图片的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 小时前
3D STEP文件编程
3d
时空节拍AI数字人1 小时前
数字文旅补贴来了,景区申报要注意什么?
大数据·人工智能·百度·3d·ai·架构·aigc
Martina_03211 小时前
AI生成3D模型导入后只剩一个大网格?用6步完成微缩场景拆分与优化
人工智能·游戏·数学建模·3d·ai·自然语言处理·aigc
数字新视界2 小时前
国产信创动环监控系统的未来趋势分析
物联网·3d·数字孪生·三维可视化·数据可视化
成都渲染101云渲染66668 小时前
云渲染怎么用?从项目准备到提交出图,3ds Max、VRay、UE5 实用教程
3d·ue5
我才是银古1 天前
大坐标、镜像与弦高:.NET CSG 库的工程笔记
3d·cad·csg
创世虚拟世界1 天前
我做了一个 3D 虚拟世界基底,基于这个再做 3D 虚拟世界或者元宇宙,会事半功倍
javascript·人工智能·3d·gitee·虚拟现实
西红柿炖牛腩3541 天前
数字孪生大屏场景模型几个 G,Draco 3D 模型压缩和减面该怎么排顺序
3d·大屏端
3D可视化大侠1 天前
DPE 工程怎么交付到自有系统:GLB 导出与 SDK 集成实践
3d
总要学点什么1 天前
第47篇:三维特效-雷达波效果——波纹一圈圈往外推,一半却埋在地下
3d·前端框架·gis·webgl·cesium