精华内容
下载资源
问答
  • 1.Open3D教程——Open3D介绍

    千次阅读 2021-02-02 14:49:11
    Open3D是一个开源库,它支持处理3D数据的软件的快速开发。Open3D前端在C++和Python中有一些公开的数据结构和算法。后端经过高度优化,并设置为并行化。 Open3D的核心功能包括 三维数据结构 三维数据处理算法 场景...

    介绍

    Open3D是一个开源库,它支持处理3D数据的软件的快速开发。Open3D前端在C++和Python中有一些公开的数据结构和算法。后端经过高度优化,并设置为并行化。

    Open3D的核心功能包括

    • 三维数据结构
    • 三维数据处理算法
    • 场景重建
    • 曲面对齐
    • 三维可视化
    • 基于物理的渲染(PBR)
    • 基于PyTorch和TensorFlow的三维机器学习支持
    • 对三维数据操作用GPU加速
    • 支持C++和Python
    展开全文
  • 3.Open3D教程——点云数据操作

    千次阅读 2021-02-02 14:51:21
    import open3d as o3d import numpy as np print("Load a ply point cloud, print it, and render it") pcd = o3d.io.read_point_cloud("fragment.ply") print(pcd) print(np.asarray(pcd.points)) o3d....

    点云数据

    本教程阐述了基本的点云用法。

    随需要的文件链接

    1. 显示点云

    import open3d as o3d
    import numpy as np
    
    print("Load a ply point cloud, print it, and render it")
    pcd = o3d.io.read_point_cloud("fragment.ply")
    print(pcd)
    print(np.asarray(pcd.points))
    o3d.visualization.draw_geometries([pcd])
    

    read_point_cloud: 该方法用于读取点云,它会根据扩展名对文件进行解码。所支持的文件类型

    draw_geometries: 查看点云,可以通过移动鼠标来从不同的角度点云。

    它看起来像一个密集的曲面,但实际上是一个渲染为曲面的点云。GUI支持各种键盘功能。例如,-键减小点(曲面)的大小。

    注:按H键为GUI打印出键盘指令的完整列表。有关可视化GUI的更多信息,请参阅可视化和自定义可视化。

    2. 体素下采样

    体素下采样使用常规体素栅格从输入点云创建均匀下采样点云。它通常用作许多点云处理任务的预处理步骤。该算法分两步操作:

    • 将点固定为体素。
    • 每个被占用的体素通过平均内部的所有点来生成正好一个点。
    print("Downsample the point cloud with a voxel of 0.05")
    downpcd = pcd.voxel_down_sample(voxel_size=0.05)
    o3d.visualization.draw_geometries([downpcd])
    

    对体素为0.05的点云进行下采样。

    3. 顶点正态估计

    点云的另一个基本操作是点正态估计。按N键查看点法线。键-和+可用于控制法线的长度。

    print("Recompute the normal of the downsampled point cloud")
    downpcd.estimate_normals(
        search_param=o3d.geometry.KDTreeSearchParamHybrid(radius=0.1, max_nn=30))
    o3d.visualization.draw_geometries([downpcd],
                                      point_show_normal=True)
    

    estimate_normals: 计算每个点的法线。该函数查找相邻点并使用协方差分析计算相邻点的主轴。该方法的两个关键参数radius=0.1和max_nn=30指定搜索半径和最大最近邻。它的搜索半径为10cm,最多只考虑30个邻居,节省了计算时间。

    4. 访问估计顶点法线

    可以从downpcdnormals变量中检索估计的法向量。

    print("Print a normal vector of the 0th point")
    print(downpcd.normals[0])
    

    可以通过np.asaray将法向量转换为numpy数组。

    print("Print the normal vectors of the first 10 points")
    print(np.asarray(downpcd.normals)[:10, :])
    

    5. 裁剪点云

    加载多边形体积并使用它裁剪原始点云

    print("Load a polygon volume and use it to crop the original point cloud")
    vol = o3d.visualization.read_selection_polygon_volume(
        "cropped.json")
    chair = vol.crop_point_cloud(pcd)
    o3d.visualization.draw_geometries([chair])
    

    read_selection_polygon_volume: 读取指定多边形选择区域的json文件。

    vol.crop_point_cloud(pcd): 过滤出点。只剩下椅子了。

    6. 绘制点云

    print("Paint chair")
    chair.paint_uniform_color([1, 0.706, 0])
    o3d.visualization.draw_geometries([chair])
    

    paint_uniform_color: 将所有点绘制为统一的颜色。颜色在RGB空间,[0,1]范围内。

    7. 点云距离

    Open3D提供了方法compute_point_cloud_distance来计算源文件和目标文件间的距离,它为源点云中的每个点计算到目标点云中最近点的距离。在下面的示例中,我们使用函数来计算两点云之间的差异。请注意,此方法也可用于计算两点云之间的倒角距离。

    import open3d as o3d
    import numpy as np
    
    # Load data
    pcd = o3d.io.read_point_cloud("test_data/fragment.ply")
    vol = o3d.visualization.read_selection_polygon_volume(
        "test_data/Crop/cropped.json")
    chair = vol.crop_point_cloud(pcd)
    
    dists = pcd.compute_point_cloud_distance(chair)
    dists = np.asarray(dists)
    ind = np.where(dists > 0.01)[0]
    pcd_without_chair = pcd.select_by_index(ind)
    o3d.visualization.draw_geometries([pcd_without_chair])
    

    8. 边界体积

    点云几何体类型与Open3D中的所有其他几何体类型一样具有边界体积。当前,Open3D实现了一个AxisAlignedBoundingBox和一个OrientedBoundingBox,也可用于裁剪几何体。

    aabb = chair.get_axis_aligned_bounding_box()
    aabb.color = (1, 0, 0)
    obb = chair.get_oriented_bounding_box()
    obb.color = (0, 1, 0)
    o3d.visualization.draw_geometries([chair, aabb, obb])
    

    9. 密度的聚类算法簇

    给定一个来自深度传感器的点云,我们希望将本地点云簇分组在一起。为此,我们可以使用聚类算法。Open3D实现了DBSCAN,这是一种基于密度的聚类算法。该算法在cluster_dbscan中实现,需要两个参数:eps定义到簇内邻居的距离,min_points定义形成簇所需的最小点数。函数返回labels,其中labelmin_points表示noise。

    import open3d as o3d
    import numpy as np
    import matplotlib.pyplot as plt
    
    pcd = o3d.io.read_point_cloud("test_data/fragment.ply")
    
    with o3d.utility.VerbosityContextManager(
            o3d.utility.VerbosityLevel.Debug) as cm:
        labels = np.array(
            pcd.cluster_dbscan(eps=0.02, min_points=10, print_progress=True))
    
    max_label = labels.max()
    print(f"point cloud has {max_label + 1} clusters")
    colors = plt.get_cmap("tab20")(labels / (max_label if max_label > 0 else 1))
    colors[labels < 0] = 0
    pcd.colors = o3d.utility.Vector3dVector(colors[:, :3])
    o3d.visualization.draw_geometries([pcd])
    

    10. 平面分割

    Open3D还支持使用RANSAC从点云分割几何原语。要在点云中找到支撑度最大的平面,可以使用segment_plane.该。法有三个参数:distance_threshold定义了一个点到被认为是内联的估计平面的最大距离,ransac_n定义了随机采样以估计平面的点的数量,num_iterations定义了随机平面的采样和验证频率。然后函数将平面返回为(a,b,c,d),这样平面上的每个点(x,y,z)的ax+by+cz+d=0。函数还返回内部点的索引列表。

    import open3d as o3d
    import numpy as np
    import matplotlib.pyplot as plt
    
    pcd = o3d.io.read_point_cloud("test_data/fragment.pcd")
    plane_model, inliers = pcd.segment_plane(distance_threshold=0.01,
                                             ransac_n=3,
                                             num_iterations=1000)
    [a, b, c, d] = plane_model
    print(f"Plane equation: {a:.2f}x + {b:.2f}y + {c:.2f}z + {d:.2f} = 0")
    
    inlier_cloud = pcd.select_by_index(inliers)
    inlier_cloud.paint_uniform_color([1.0, 0, 0])
    outlier_cloud = pcd.select_by_index(inliers, invert=True)
    o3d.visualization.draw_geometries([inlier_cloud, outlier_cloud])
    
    展开全文
  • Open3D具有可用于处理体素网格的几何体类型VoxelGrid。 1. 从三角形网格创建 Open3D提供了函数create_from_triangle_mesh,从一个三角网格来创建体素网格。它返回一个体素栅格,其中与三角形相交的所有体素都设置为1...

    点云和三角形网格是非常灵活的,但是是不规则的几何体类型。体素网格是在常规三维网格上定义的另一种三维几何体类型,而体素可以被认为是二维像素的三维对应物。Open3D具有可用于处理体素网格的几何体类型VoxelGrid

    1. 从三角形网格创建

    Open3D提供了函数create_from_triangle_mesh,从一个三角网格来创建体素网格。它返回一个体素栅格,其中与三角形相交的所有体素都设置为1,其他所有体素都设置为0。参数voxel_size定义体素栅格的分辨率。

    import open3d as o3d 
    import open3d_tutorial as o3dtut
    import numpy as np
    
    print('input')
    mesh = o3dtut.get_bunny_mesh()
    # fit to unit cube
    mesh.scale(1 / np.max(mesh.get_max_bound() - mesh.get_min_bound()),
               center=mesh.get_center())
    # o3d.visualization.draw_geometries([mesh])
    
    print('voxelization')
    voxel_grid = o3d.geometry.VoxelGrid.create_from_triangle_mesh(mesh, voxel_size=0.05)
    o3d.visualization.draw_geometries([voxel_grid])
    

    2. 从点云创建

    体素网格也可以从点云创建,方法是create_from_point_cloud。如果点云的至少一个点位于体素内,则体素被占用。体素的颜色是体素内所有点的平均值。参数voxel_size定义体素栅格的分辨率。

    print('input')
    N = 2000
    pcd = o3dtut.get_armadillo_mesh().sample_points_poisson_disk(N)
    # fit to unit cube
    pcd.scale(1 / np.max(pcd.get_max_bound() - pcd.get_min_bound()),
              center=pcd.get_center())
    pcd.colors = o3d.utility.Vector3dVector(np.random.uniform(0, 1, size=(N, 3)))
    o3d.visualization.draw_geometries([pcd])
    
    print('voxelization')
    voxel_grid = o3d.geometry.VoxelGrid.create_from_point_cloud(pcd,
                                                                voxel_size=0.05)
    o3d.visualization.draw_geometries([voxel_grid])
    

    体素网格也可以用来测试点是否在被占用的体素内。方法check_if_included的输入参数位(n, 3)数组,输出为布尔数组。

    queries = np.asarray(pcd.points)
    output = voxel_grid.check_if_included(o3d.utility.Vector3dVector(queries))
    print(output[:10])
    

    3. 体素雕刻

    方法create_from_point_cloudcreate_from_triangle_mesh,只在几何体的表面创建被占用的体素。但是,可以从许多深度贴图或轮廓中雕刻体素网格。Open3D为体素雕刻提供了carve_depth_mapcarve_silhouette的方法。

    下面的代码通过首先从几何体渲染深度贴图并使用这些深度贴图来雕刻密集体素网格来演示用法。结果是给定形状的填充体素栅格。

    def xyz_spherical(xyz):
        x = xyz[0]
        y = xyz[1]
        z = xyz[2]
        r = np.sqrt(x * x + y * y + z * z)
        r_x = np.arccos(y / r)
        r_y = np.arctan2(z, x)
        return [r, r_x, r_y]
    
    
    def get_rotation_matrix(r_x, r_y):
        rot_x = np.asarray([[1, 0, 0], [0, np.cos(r_x), -np.sin(r_x)],
                            [0, np.sin(r_x), np.cos(r_x)]])
        rot_y = np.asarray([[np.cos(r_y), 0, np.sin(r_y)], [0, 1, 0],
                            [-np.sin(r_y), 0, np.cos(r_y)]])
        return rot_y.dot(rot_x)
    
    
    def get_extrinsic(xyz):
        rvec = xyz_spherical(xyz)
        r = get_rotation_matrix(rvec[1], rvec[2])
        t = np.asarray([0, 0, 2]).transpose()
        trans = np.eye(4)
        trans[:3, :3] = r
        trans[:3, 3] = t
        return trans
    
    
    def preprocess(model):
        min_bound = model.get_min_bound()
        max_bound = model.get_max_bound()
        center = min_bound + (max_bound - min_bound) / 2.0
        scale = np.linalg.norm(max_bound - min_bound) / 2.0
        vertices = np.asarray(model.vertices)
        vertices -= center
        model.vertices = o3d.utility.Vector3dVector(vertices / scale)
        return model
    
    
    def voxel_carving(mesh,
                      output_filename,
                      camera_path,
                      cubic_size,
                      voxel_resolution,
                      w=300,
                      h=300,
                      use_depth=True,
                      surface_method='pointcloud'):
        mesh.compute_vertex_normals()
        camera_sphere = o3d.io.read_triangle_mesh(camera_path)
    
        # setup dense voxel grid
        voxel_carving = o3d.geometry.VoxelGrid.create_dense(
            width=cubic_size,
            height=cubic_size,
            depth=cubic_size,
            voxel_size=cubic_size / voxel_resolution,
            origin=[-cubic_size / 2.0, -cubic_size / 2.0, -cubic_size / 2.0],
            color=[1.0, 0.7, 0.0])
    
        # rescale geometry
        camera_sphere = preprocess(camera_sphere)
        mesh = preprocess(mesh)
    
        # setup visualizer to render depthmaps
        vis = o3d.visualization.Visualizer()
        vis.create_window(width=w, height=h, visible=False)
        vis.add_geometry(mesh)
        vis.get_render_option().mesh_show_back_face = True
        ctr = vis.get_view_control()
        param = ctr.convert_to_pinhole_camera_parameters()
    
        # carve voxel grid
        pcd_agg = o3d.geometry.PointCloud()
        centers_pts = np.zeros((len(camera_sphere.vertices), 3))
        for cid, xyz in enumerate(camera_sphere.vertices):
            # get new camera pose
            trans = get_extrinsic(xyz)
            param.extrinsic = trans
            c = np.linalg.inv(trans).dot(np.asarray([0, 0, 0, 1]).transpose())
            centers_pts[cid, :] = c[:3]
            ctr.convert_from_pinhole_camera_parameters(param)
    
            # capture depth image and make a point cloud
            vis.poll_events()
            vis.update_renderer()
            depth = vis.capture_depth_float_buffer(False)
            pcd_agg += o3d.geometry.PointCloud.create_from_depth_image(
                o3d.geometry.Image(depth),
                param.intrinsic,
                param.extrinsic,
                depth_scale=1)
    
            # depth map carving method
            if use_depth:
                voxel_carving.carve_depth_map(o3d.geometry.Image(depth), param)
            else:
                voxel_carving.carve_silhouette(o3d.geometry.Image(depth), param)
            print("Carve view %03d/%03d" % (cid + 1, len(camera_sphere.vertices)))
        vis.destroy_window()
    
        # add voxel grid survace
        print('Surface voxel grid from %s' % surface_method)
        if surface_method == 'pointcloud':
            voxel_surface = o3d.geometry.VoxelGrid.create_from_point_cloud_within_bounds(
                pcd_agg,
                voxel_size=cubic_size / voxel_resolution,
                min_bound=(-cubic_size / 2, -cubic_size / 2, -cubic_size / 2),
                max_bound=(cubic_size / 2, cubic_size / 2, cubic_size / 2))
        elif surface_method == 'mesh':
            voxel_surface = o3d.geometry.VoxelGrid.create_from_triangle_mesh_within_bounds(
                mesh,
                voxel_size=cubic_size / voxel_resolution,
                min_bound=(-cubic_size / 2, -cubic_size / 2, -cubic_size / 2),
                max_bound=(cubic_size / 2, cubic_size / 2, cubic_size / 2))
        else:
            raise Exception('invalid surface method')
        voxel_carving_surface = voxel_surface + voxel_carving
    
        return voxel_carving_surface, voxel_carving, voxel_surface
    
    mesh = o3dtut.get_armadillo_mesh()
    
    output_filename = os.path.abspath("../../test_data/voxelized.ply")
    camera_path = os.path.abspath("../../test_data/sphere.ply")
    visualization = True
    cubic_size = 2.0
    voxel_resolution = 128.0
    
    voxel_grid, voxel_carving, voxel_surface = voxel_carving(
        mesh, output_filename, camera_path, cubic_size, voxel_resolution)
    
    print("surface voxels")
    print(voxel_surface)
    o3d.visualization.draw_geometries([voxel_surface])
    
    print("carved voxels")
    print(voxel_carving)
    o3d.visualization.draw_geometries([voxel_carving])
    
    print("combined voxels (carved + surface)")
    print(voxel_grid)
    o3d.visualization.draw_geometries([voxel_grid])
    
    展开全文
  • Open3D有一个图像的数据结构,该数据结构支持各种函数,例如:read_image, write_image和draw_geometries。Open3D图像和numpy数组可以相互转换。Open3D的RGBDImage由两张图片组成,RGBDImage.depth和RGBDImage.color...

    图片数据

    1. RGBD images

    Open3D有一个图像的数据结构,该数据结构支持各种函数,例如:read_image, write_imagedraw_geometries。Open3D图像和numpy数组可以相互转换。Open3D的RGBDImage由两张图片组成,RGBDImage.depthRGBDImage.color。我们要求两个图像被注册到同一个相机帧,并具有相同的分辨率。下面的教程演示如何从许多著名的RGBD数据集中读取和使用RGBD图像。

    2. 红木数据集

    红木格式在16位单通道图像中存储深度。整数值表示深度测量,单位为毫米。它是Open3D解析深度图像的默认格式。

    print("Read Redwood dataset")
    color_raw = o3d.io.read_image(r"./RGBD/color/00000.jpg")
    depth_raw = o3d.io.read_image(r"./RGBD/depth/00000.png")
    rgbd_image = o3d.geometry.RGBDImage.create_from_color_and_depth(
        color_raw, depth_raw)
    print(rgbd_image)
    

    默认的转换函数create_rgbd_image_from_color_and_depth对创建rgbd图像。彩色图像被转换成灰度图像,存储在[0,1]中的浮动范围内。深度图像存储在float中,以米为单位表示深度值。转换后的图像可以渲染为numpy数组。

    import open3d as o3d
    import numpy as np
    import matplotlib.pyplot as plt
    
    
    print("Read Redwood dataset")
    color_raw = o3d.io.read_image(r"./RGBD/color/00000.jpg")
    depth_raw = o3d.io.read_image(r"./RGBD/depth/00000.png")
    rgbd_image = o3d.geometry.RGBDImage.create_from_color_and_depth(
        color_raw, depth_raw)
    print(rgbd_image)
    plt.subplot(1, 2, 1)
    plt.title('Redwood grayscale image')
    plt.imshow(rgbd_image.color)
    plt.subplot(1, 2, 2)
    plt.title('Redwood depth image')
    plt.imshow(rgbd_image.depth)
    plt.show()
    

    给定一组相机参数,可以将RGBD图像转换为点云。

    pcd = o3d.geometry.PointCloud.create_from_rgbd_image(
        rgbd_image,
        o3d.camera.PinholeCameraIntrinsic(
            o3d.camera.PinholeCameraIntrinsicParameters.PrimeSenseDefault))
    # Flip it, otherwise the pointcloud will be upside down
    pcd.transform([[1, 0, 0, 0], [0, -1, 0, 0], [0, 0, -1, 0], [0, 0, 0, 1]])
    o3d.visualization.draw_geometries([pcd])
    

    这里我们用的是PinholeCameraIntrinsicParameters.PrimeSenseDefault属性作为默认相机参数。它的图像分辨率为640x480,焦距(fx,fy)=(525.0525.0),光学中心(cx,cy)=(319.5239.5)。单位矩阵用作默认的外部参数。pcd转换在点云上应用上下翻转变换以实现更好的可视化效果。

    展开全文
  • open3D与D435运用python代码及实例ply数据 数据及部分代码参考github开源项目
  • open3d学习教程系列(一)

    千次阅读 2020-10-14 13:50:01
    open3d学习教程系列(一)安装使用方法 安装 pip install open3d 使用方法 >>> import open3d as o3d >>> ply = o3d.io.read_point_cloud("./test/66da0d68f01cfe6f7ef201d0c0b8ae47.ply") ...
  • 8.Open3D教程——变换

    2021-02-02 17:57:53
    Open3D的几何类型有许多转换方法。在本教程中,我们将演示如何使用平移、旋转、缩放和变换。 1. 平移 我们要看的第一种转换方法是平移。平移方法将单个3D向量t作为输入,并通过该向量(vt=v+t)来转换几何体的所有点...
  • 文献中有几种方法,Open3D目前实现了以下功能: Alpha shapes [Edelsbrunner1983] Ball pivoting [Bernardini1999] Poisson surface reconstruction [Kazhdan2006] 1. Alpha shapes alpha形[Edel
  • 2.Open3D教程——文件读取和保存

    千次阅读 2021-02-02 14:50:16
    教程演示了Open3D如何读写基本数据结构。 1. 点云 下面的代码读取和写入点云。 print("Testing IO for point cloud ...") pcd = o3d.io.read_point_cloud("../../test_data/fragment.pcd") print(pcd) o3d.io....
  • Open3D有一个称为TriangleMesh的3D三角网格数据结构。下面的代码演示如何从ply文件中读取三角形网格并打印其顶点和三角形。 import open3d as o3d import numpy as np import matplotlib.pyplot as plt import open...
  • Open3D+vs配置以及使用教程

    千次阅读 2020-07-20 18:45:37
    Open3d-0.8.0+Cmake+vs2015 1.下载 简要看一下官网:Open3D Home Page Github主页:Open3D Github 注意下载版本,一定要与vs相匹配,官方有相应的说明,eg.vs2019+open3d0.10.0或者vs2015+open3d0.8.0,如果...
  • 下面的教程使用NumPy生成sync函数的变体,并使用Open3D可视化该函数。首先,我们生成一个n×3矩阵xyz。 # Generate some neat n times 3 matrix using a variant of sync function x = np.linspace(-3, 3, 401) mesh...
  • open3d函数教程学习(持续更新)

    千次阅读 2020-07-14 15:53:56
    Open3D:3D数据处理的现代库 Open3D的核心功能包括: 3D数据结构 3D数据处理算法 场景重建 表面对齐 3D可视化 基于物理的渲染(PBR) 在C ++和Python中可用 导入open3d模块和打印出帮助信息。 import open3d as o3d ...
  • Open3D-ML是Open3D的扩展,用于3D机器学习任务。 它建立在Open3D核心库的基础上,并通过用于3D数据处理的机器学习工具进行了扩展。 此回购集中于诸如语义点云分段之类的应用程序,并提供可应用于常见任务以及训练...
  • open3d-0.10.0 + visual studio 2019 + windows

    千次阅读 2021-11-10 11:10:08
    文章目录下载Tortoisegitcmakeopen3d安装Tortoisegitcmakeopen3d测试配置参考文章 下载 Tortoisegit TorToiseGit2.12.0 中文版csdn下载 cmake cmake3.20.0 csdn下载 open3d ...Open3D:Win10 + VS2017
  • 1、这是一个将open3d 0.13作为库来使用的教程 2、源码使用的是官方demo https://github.com/isl-org/open3d-cmake-find-package open3d官网:http://www.open3d.org/ 3、所有资源已给出链接 准备 编译open3d 0.13 ...
  • open3d例程

    千次阅读 2018-03-03 13:33:20
    Open3D是一个可以支持 3D数据处理软件快速开发的开源库。简要介绍下其例程。综合场景Open3D能集成所有RGB-D图像到单一TSDF volume,压缩为一个mesh。输入参数if __name__ =="__main__": parser =argparse...
  • 使用Open3D进行3D点云处理 概述 该存储库是为在第24届图像传感研讨会(SSII2018)上的“ 3D对象检测和将其应用于机器人视觉3D点云处理的基础知识和位置/方向估计的机制”的教程准备的材料。我将介绍在讲座中解释的...
  • 爆肝5万字❤️Open3D 点云数据处理基础(Python版)

    千次阅读 多人点赞 2021-09-07 21:09:31
    本文为Open3D 点云数据处理基础教程(Python版),小白也能轻松上手!还等什么呢,学起来!
  • Open3d学习计划——3(点云)

    万次阅读 多人点赞 2020-05-22 15:52:47
    (本教程可视化的点云数据为官方图片,自己可以根据手头数据进行测试,或者去官方github主页下载对应测试数据) 可视化点云 本教程的第一部分是读取点云数据并将其可视化。 print("Load a ply point cloud, print it...
  • 教程的目的是提供使用两个流行的库:点云库(PCL)和Open3D来处理3D或多维数据的示例。 这些示例将涵盖诸如I / O,功能,关键点,注册,细分和示例共识之类的主题。 初步和依赖项 您的系统应该有一个支持C ++ 11...
  • windows10编译open3d 0.13

    2021-10-28 14:54:14
    open3d 0.13在win10上的编译详细过程
  • OpenCV与Open3D等开源视觉库的详细笔记

    千次阅读 热门讨论 2019-11-24 18:31:31
    OpenCV版本为4.1.2+,Open3D版本为0.8+。 OpenCV: OpenCV(开源计算机视觉库)是一个开源计算机视觉和机器学习软件库。OpenCV的构建旨在为计算机视觉应用程序提供通用的基础结构,并加速在商业产品中使用...
  • 教程:Python Open3d 完成 ICP 点云配准

    万次阅读 多人点赞 2020-03-30 16:29:30
    关于Open3d Open3D 是一个在Python和C++平台上的三维数据处理与可视化库。它由 Qian-Yi Zhou,Jaesik Park, 以及 Vladlen Koltun 共同完成。其中 Zhou 博士在中国清华大学取得硕士学位,并分别在 USC 和Stanford ...
  • Open3d对kitti数据集可视化

    千次阅读 2021-10-25 21:15:27
    Open3d对kitti数据集进行可视化数据集工程结构kitti数据集解析Kitti_Dataset类Object3d类Calib类单帧显示kiiti的点云bin demoOpencv对img进行显示demo参考 数据集工程结构 数据集和kitti类解析文件结构如下: 数据...
  • 开发机上安装Open3d教程

    千次阅读 2018-08-20 17:51:15
    最新更新:时隔半年再装open3d时发现下文的方法略麻烦了,感谢网友的分享https://liuqiangblog.github.io/2018/07/23/Open3D%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA/ 安装python版的open3d,非常...
  • open3d 点云上交互选点

    2021-01-19 17:01:52
    有时候我想选定点云上的特定点,但一般来讲点云是无序的。下面的教程可以使用鼠标点选。 链接 http://www.open3d.org/docs/release/tutorial/visualization/interactive_visualization.html
  • 01-02.安装Open3D

    2021-04-04 10:29:29
    文章目录从PyPI 或者 Conda 安装Pip(PyPI)开发版本Conda尝试导入运行Open3D教程FAQ 从PyPI 或者 Conda 安装 Open3D Python包通过PyPI和Conda分发。 支持Python版本:3.6 / 3.7 / 3.8 支持的操作系统:Ubuntu 18.04 + ...
  • open3d文档

    2021-05-09 12:19:11
    open3d http://www.360doc.com/content/21/0309/15/74116089_966081528.shtml
  • Linux上安装open3d

    2021-01-13 12:57:08
    pip install --user open3d-python sudo apt-get install libglfw3-dev

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,499
精华内容 6,199
关键字:

open3d教程