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

持续更新

相关推荐
Hali_Botebie21 小时前
【蒸馏(1)】UniDistill:用于BEV 3D检测的通用跨模态蒸馏框架!
3d
MediaTea21 小时前
Ae 效果详解:3D 通道提取
3d
3DVisionary21 小时前
XTOP3D的DIC技术在极端条件下的应用解决方案
数码相机·3d·航空工业·全场应变测量·航空机匣内部四测头同步测量·反射镜辅助dic观测·四测头方案
吃个糖糖1 天前
Halcon 3D加快表面匹配速度
3d
mirrornan2 天前
3D全景沉浸式看车:虚拟现实重构汽车消费新体验
科技·3d·汽车·vr·3d数字化·3d看车
pixle02 天前
Three.js 快速入门教程【一】开启你的 3D Web 开发之旅
前端·javascript·3d
视觉人机器视觉3 天前
机器视觉中的3D高反光工件检测
人工智能·3d·c#·视觉检测
mirrornan3 天前
从建模到展示,如何实现3D在线预览展示?
3d
3D小将3 天前
STL 在线转 3MF,开启 3D 模型转换新体验
3d·3d格式转换
视觉人机器视觉3 天前
3D与2D机器视觉机械臂引导的区别
人工智能·数码相机·计算机视觉·3d·视觉检测