一、说明
对于点云 处理,这里介绍哦pen3d,该软件和opencv同样是interl公司的产品。
Open3D 是一个开源库,支持快速开发处理 3D 数据的软件。 Open3D 前端在 C++ 和 Python 中公开了一组精心挑选的数据结构和算法。后端经过高度优化,并设置为并行化。
Point cloud — Open3D 0.17.0 documentation
二、如何安装open3d?
pip install open3d # or pip install open3d-cpu # Smaller CPU only wheel on x86_64 Linux (since v0.17+)
三、显示点云数据
3.1 显示点云场景数据
import open3d as o3d
import numpy as np
print("Load a ply point cloud, print it, and render it")
ply_point_cloud = o3d.data.PLYPointCloud()
pcd = o3d.io.read_point_cloud(ply_point_cloud.path)
print(pcd)
print(np.asarray(pcd.points))
o3d.visualization.draw_geometries([pcd],
zoom=0.3412,
front=[0.4257, -0.2125, -0.8795],
lookat=[2.6172, 2.0475, 1.532],
up=[-0.0694, -0.9768, 0.2024])
这里:ply_point_cloud = o3d.data.PLYPointCloud()语句从网上下载了演示点云数据。然后显示。注意,我们自己做的需要接入相机,也生成类似的点云。
read_point_cloud 从文件中读取点云。它尝试根据扩展名解码文件。有关支持的文件类型的列表,请参阅文件 IO。
draw_geometries 可视化点云。使用鼠标/触控板从不同的角度查看几何体。
它看起来像一个密集的表面,但它实际上是一个渲染为面元的点云。 GUI 支持各种键盘功能。例如,- 键减小点(面元)的大小。
实验结果:
python -c "import open3d as o3d; mesh = o3d.geometry.TriangleMesh.create_sphere(); mesh.compute_vertex_normals(); o3d.visualization.draw(mesh, raw_mode=True)"
GitHub - isl-org/Open3D-ML: An extension of Open3D to address 3D Machine Learning tasks
3.2 体素下采样
下采样函数
downpcd = pcd.voxel_down_sample(voxel_size=0.05)
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],
zoom=0.3412,
front=[0.4257, -0.2125, -0.8795],
lookat=[2.6172, 2.0475, 1.532],
up=[-0.0694, -0.9768, 0.2024])
3.3 顶点法线估计
search_param=o3d.geometry.KDTreeSearchParamHybrid(radius=0.1, max_nn=30))
点云的另一个基本操作是点法线估计。按 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],
zoom=0.3412,
front=[0.4257, -0.2125, -0.8795],
lookat=[2.6172, 2.0475, 1.532],
up=[-0.0694, -0.9768, 0.2024],
point_show_normal=True)
参考文章:
OpenCV——单目视觉:方形标定板角点提取_find4quadcornersubpix_点云侠的博客-CSDN博客