【点云处理技术之open3d】第四篇:使用open3d绘制常用类型——箭头、圆柱、长方体、球形、箭头、坐标轴和线条
文章目录
- 1. 绘制圆锥
- 2. 绘制圆柱
- 3. 绘制长方体
- 4. 绘制球形
- 5. 绘制箭头
- 6. 绘制坐标轴
- 7. 绘制多边形和顶点
- 8. 一次绘制多个类型
1. 绘制圆锥
用o3d.geometry.TriangleMesh.create_cone
来绘制圆锥,radius控制其半径,height控制其高度
import open3d as o3dcone = o3d.geometry.TriangleMesh.create_cone(radius=1.0,height=2.0,resolution=20,split=1)
cone.compute_vertex_normals()
cone.paint_uniform_color([0, 1, 0])
o3d.visualization.draw_geometries([cone])
2. 绘制圆柱
用o3d.geometry.TriangleMesh.create_cylinder
绘制圆柱,radius控制圆柱半径,height控制圆柱的高。
import open3d as o3dmesh_cylinder = o3d.geometry.TriangleMesh.create_cylinder(radius=0.3,height=4.0)
mesh_cylinder.compute_vertex_normals()
mesh_cylinder.paint_uniform_color([0.1, 0.4, 0.1])
o3d.visualization.draw_geometries([mesh_cylinder])
3. 绘制长方体
用o3d.geometry.TriangleMesh.create_box
绘制长方体,width,height,depth对应长方体长、宽和高度。
import open3d as o3dmesh_box = o3d.geometry.TriangleMesh.create_box(width=2.0,height=1.0,depth=1.0)
mesh_box.compute_vertex_normals()
mesh_box.paint_uniform_color([0.9, 0.1, 0.1])
o3d.visualization.draw_geometries([mesh_box])
4. 绘制球形
用o3d.geometry.TriangleMesh.create_sphere
绘制球体,radius控制球的半径,resolution控制图形显示的分辨率,如果不设定分配率的话,默认值为20。
import open3d as o3dmesh_sphere = o3d.geometry.TriangleMesh.create_sphere(radius=1.0,resolution=100)
mesh_sphere.compute_vertex_normals()
mesh_sphere.paint_uniform_color([0.1, 0.1, 0.7])
o3d.visualization.draw_geometries([mesh_sphere])
5. 绘制箭头
用o3d.geometry.TriangleMesh.create_arrow
绘制箭头。
import open3d as o3darrow = o3d.geometry.TriangleMesh.create_arrow(cylinder_radius=1.0,cone_radius=1.5,cylinder_height=5.0,cone_height=4.0,resolution=20,cylinder_split=4,cone_split=1)
arrow.compute_vertex_normals()
arrow.paint_uniform_color([1, 0, 0])
o3d.visualization.draw_geometries([arrow])
6. 绘制坐标轴
用o3d.geometry.TriangleMesh.create_coordinate_frame
绘制坐标轴,其中size表示粗细,origin标识坐标原点。
import open3d as o3dmesh_frame = o3d.geometry.TriangleMesh.create_coordinate_frame(size=0.6, origin=[-2, -2, -2])o3d.visualization.draw_geometries([mesh_frame])
7. 绘制多边形和顶点
可以通过o3d.visualization.Visualizer()
添加我们需要的组件,我们在下面使用了vis.add_geometry
添加了边和点,同样也可以使用它添加上面讲到的长方体、球形等
。
import open3d as o3d
import numpy as npdef polygon():#绘制顶点polygon_points = np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1],[0,0,5]])lines = [[0, 1], [1, 2], [2, 3],[3,0]] #连接的顺序,封闭链接color = [[1, 0, 0] for i in range(len(lines))] #添加顶点,点云points_pcd = o3d.geometry.PointCloud()points_pcd.points = o3d.utility.Vector3dVector(polygon_points)points_pcd.paint_uniform_color([0, 0.3, 0]) #点云颜色#绘制线条lines_pcd = o3d.geometry.LineSet()lines_pcd.lines = o3d.utility.Vector2iVector(lines)lines_pcd.colors = o3d.utility.Vector3dVector(color) #线条颜色lines_pcd.points = o3d.utility.Vector3dVector(polygon_points)return lines_pcd, points_pcdif __name__ == "__main__":axis_pcd = o3d.geometry.TriangleMesh.create_coordinate_frame(size=0.5, origin=[0, 0, 0])vis = o3d.visualization.Visualizer()vis.create_window(window_name='绘制多边形')#vis.toggle_full_screen() #全屏#设置opt = vis.get_render_option()opt.background_color = np.asarray([0, 0, 0]) #背景opt.point_size = 1 #点云大小#vis.add_geometry(axis_pcd)lines, points = polygon()vis.add_geometry(lines)vis.add_geometry(points)#vis.update_geometry(points) vis.run()vis.destroy_window()
8. 一次绘制多个类型
第7节中讲到了,我们可以使用vis.add_geometry
逐个添加我们需要绘制的类型,同样我们也可以使用以下方法一次性添加目标。
import open3d as o3dmesh_box = o3d.geometry.TriangleMesh.create_box(width=1.0,height=1.0,depth=1.0)
mesh_box.compute_vertex_normals()
mesh_box.paint_uniform_color([0.9, 0.1, 0.1])
mesh_sphere = o3d.geometry.TriangleMesh.create_sphere(radius=1.0)
mesh_sphere.compute_vertex_normals()
mesh_sphere.paint_uniform_color([0.1, 0.1, 0.7])
mesh_cylinder = o3d.geometry.TriangleMesh.create_cylinder(radius=0.3,height=4.0)
mesh_cylinder.compute_vertex_normals()
mesh_cylinder.paint_uniform_color([0.1, 0.9, 0.1])
mesh_frame = o3d.geometry.TriangleMesh.create_coordinate_frame(size=0.6, origin=[-2, -2, -2])# 一次性添加方法一:
o3d.visualization.draw_geometries([mesh_box, mesh_sphere, mesh_cylinder, mesh_frame])# 一次性添加方法二:
o3d.visualization.draw_geometries([mesh_box + mesh_sphere + mesh_cylinder + mesh_frame])
【点云处理技术之open3d】第四篇:使用open3d绘制常用类型——箭头、圆柱、长方体、球形、箭头、坐标轴和线条相关推荐
- 第五期(2022-2023)传统行业云原生技术落地调研报告——金融篇
随着数字化浪潮的来临,云原生技术正在改变着各行各业,通过IT变革驱动业务创新发展,促进企业自身以及产业生态的转型升级. 因此,灵雀云联合云原生技术实践联盟(CNBPA)和行业内头部厂商F5,共同发起了 ...
- 解剖SQLSERVER 第四篇 OrcaMDF里对dates类型数据的解析(译)
解剖SQLSERVER 第四篇 OrcaMDF里对dates类型数据的解析(译) http://improve.dk/parsing-dates-in-orcamdf/ 在SQLSERVER里面有几 ...
- 《第四期(2021-2022)传统行业云原生技术落地调研报告——金融篇》正式发布
一.前言 随着数字化浪潮的来临,以容器.微服务为代表的云原生技术带来了一种全新的方式来开发.交付.迭代企业应用,重塑着传统行业的业务体系,加速着企业自身.以及产业生态的转型升级. 在此背景下,云原生技 ...
- 2022,了解云原生技术栈收藏这一篇就够了(附学习笔记)
云原生(Cloud Native)是最近技术圈一个比较火的名词,相信大家或多或少都听说过.不过对于大多数普通研发朋友来说,"云原生"这个词多少可能还是有些陌生,以至于刚开始听到这个 ...
- 解锁京东云底层技术密码:京东四大数智供应链技术亮相
向实共生,重启增长.7月13日,2022京东全球科技探索者大会之京东云峰会在北京举行.会上,承接更懂产业的发展理念,京东云首次展示数智供应链全景图,发布七大应用场景,四大领先技术,以及12款领先技术产 ...
- JVM第四篇之益处、常用java工具
1.StackOverFlowError:栈溢出 1)实例:下面代码报java.lang.StackOverError public class StackeOverFlowTest{public s ...
- 第四篇 | C语言中bool类型数据应用
代码展示: //为了描述逻辑的真假问题,引入关键字_Bool 描述逻辑类型, //在stdbool.h中定义bool代表_Bool,定义关键字true和false. #include<stdio ...
- 《钻哥学管理之开启篇:技术+业务+管理》(Yanlz+Unity+SteamVR+云技术+5G+AI=VR云游戏=技术+业务+管理+使命必达+DF17+立钻哥哥+==)
<钻哥学管理之开启篇:技术+业务+管理> <钻哥学管理之开启篇:技术+业务+管理> 版本 作者 参与者 完成日期 备注 YanlzManager_Open_V01_1.0 严立 ...
- AI公开课:18.05.05 施尧耘(阿里云量子技术CS)—清华AI第四讲之《人工智能与量子计算》Quantum课堂笔记——带你了解量子计算
AI公开课:18.05.05 施尧耘(阿里云量子技术CS)-清华AI第四讲之<人工智能与量子计算>Quantum课堂笔记--带你了解量子计算 导读 清华大学"人工智能前沿与产业趋 ...
最新文章
- 为什么说比特币的交易属性优于储值属性
- SqlServer 2014 还原数据库时提示:操作系统返回了错误5,,拒绝访问
- 00030_ArrayList集合
- mysql 数据检查_mysql数据一致性检查及修复
- 【差分隐私的Advanced composition到底是什么?】差分隐私系统学习记录(四)
- Android UI 优化——使用HierarchyViewer工具
- 大屏监控系统实战(5)-父工程搭建及前端相关配置
- 第三篇:白话tornado源码之请求来了
- 图解 TCP IP 协议:三次握手、四次挥手
- 智能优化算法:乌燕鸥优化算法-附代码
- 【JavaP6大纲】MySQL篇:为什么要分库分表(设计高并发系统的时候,数据库层面该如何设计)?用过哪些分库分表中间件?不同的分库分表中间件都有什么优点和缺点?你们具体是如何对数据库如何进行垂直拆分
- 中国地区2012年第一季度网络安全威胁报告
- LightOJ	 1224 DNA Prefix(字典树)
- 使用Navicat快速复制所有表的表名或字段名
- 统一语言为什么不能统一(一)
- 2022年建筑电工(建筑特殊工种)考试技巧及建筑电工(建筑特殊工种)复审模拟考试
- 解密中国互联网企业创始人,程序员打下半壁江山
- Unity dotween YoYo循环
- C# FileSystemWatcher文件监控
- 利用阿里云轻量服务器实现frp内网穿透(Mac远程控制win)
热门文章
- 1.2 安装wdcp
- [日推荐]『穷游智能攻略』国外游最佳拍档
- thinkphp PHPExcel 导入数据
- 奇虎360发财报,搜索发展如何?
- twice论文-深度估计-BA_NET
- Q4营收远超市场预期,唯品会回归“百亿美元大户”躲过倒春寒?
- Swiper4.0:H5手机端滑屏判断当前页Index并且触发动画(slideChangeTransitionEnd与swiper.activeIndex)
- 记一次java面试(小黑鱼)
- python中else是什么意思中文翻译_else是什么意思
- 西部矿业(601168):整合湖北铅锌资源