open3d-体素

open3d提供了一个专门用于体素的数据结构 VoxelGrid

class VoxelGrid(Geometry3D):
    
    origin     # 起始位置,最小的体素位置
    voxel_size # 体素尺寸
    def __init__(self, *args, **kwargs):
        """
            __init__(*args, **kwargs)
            Overloaded function.
            1. __init__(self: open3d.cpu.pybind.geometry.VoxelGrid) -> None
            Default constructor
            2. __init__(self: open3d.cpu.pybind.geometry.VoxelGrid, arg0: open3d.cpu.pybind.geometry.VoxelGrid) -> None
            Copy constructor
        """
    def carve_depth_map(self, depth_map, camera_params, keep_voxels_outside_image=False):
    def carve_silhouette(self, silhouette_mask, camera_params, keep_voxels_outside_image=False):
    # 点是否包含在体素中。 输入(n, 3)数组
    def check_if_included(self, queries):
    def create_dense(self, origin, color, voxel_size, width, height, depth):
    def create_from_octree(self, octree):
    # 从点云创建体素。 体素颜色为体素内所有点的均值。
    def create_from_point_cloud(self, input, voxel_size):
    def create_from_point_cloud_within_bounds(self, input, voxel_size, min_bound, max_bound):
    # 从三角形网格创建体素。 所有与三角网格相交的体素均设置为1,其余设置为0。
    def create_from_triangle_mesh(self, input, voxel_size):
    def create_from_triangle_mesh_within_bounds(self, input, voxel_size, min_bound, max_bound):
    def get_voxel(self, point):
    def get_voxels(self):
    def has_colors(self):
    def has_voxels(self):
    def to_octree(self, max_depth):
import numpy as np
import open3d as o3d
from open3d.web_visualizer import draw
from open3d.visualization import draw_geometries
pcd = o3d.io.read_point_cloud('datas/knot.ply')
draw(pcd)
voxel_grid = o3d.geometry.VoxelGrid()
voxel_grid=voxel_grid.create_from_point_cloud(pcd, voxel_size=2)
draw(voxel_grid)
mesh = o3d.io.read_triangle_mesh('datas/knot.ply')
draw(mesh)
voxel_grid = o3d.geometry.VoxelGrid()
voxel_grid = voxel_grid.create_from_triangle_mesh(mesh, voxel_size=3)
draw(voxel_grid)