文章目录

  • 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绘制常用类型——箭头、圆柱、长方体、球形、箭头、坐标轴和线条相关推荐

  1. 第五期(2022-2023)传统行业云原生技术落地调研报告——金融篇

    随着数字化浪潮的来临,云原生技术正在改变着各行各业,通过IT变革驱动业务创新发展,促进企业自身以及产业生态的转型升级. 因此,灵雀云联合云原生技术实践联盟(CNBPA)和行业内头部厂商F5,共同发起了 ...

  2. 解剖SQLSERVER 第四篇 OrcaMDF里对dates类型数据的解析(译)

    解剖SQLSERVER 第四篇  OrcaMDF里对dates类型数据的解析(译) http://improve.dk/parsing-dates-in-orcamdf/ 在SQLSERVER里面有几 ...

  3. 《第四期(2021-2022)传统行业云原生技术落地调研报告——金融篇》正式发布

    一.前言 随着数字化浪潮的来临,以容器.微服务为代表的云原生技术带来了一种全新的方式来开发.交付.迭代企业应用,重塑着传统行业的业务体系,加速着企业自身.以及产业生态的转型升级. 在此背景下,云原生技 ...

  4. 2022,了解云原生技术栈收藏这一篇就够了(附学习笔记)

    云原生(Cloud Native)是最近技术圈一个比较火的名词,相信大家或多或少都听说过.不过对于大多数普通研发朋友来说,"云原生"这个词多少可能还是有些陌生,以至于刚开始听到这个 ...

  5. 解锁京东云底层技术密码:京东四大数智供应链技术亮相

    向实共生,重启增长.7月13日,2022京东全球科技探索者大会之京东云峰会在北京举行.会上,承接更懂产业的发展理念,京东云首次展示数智供应链全景图,发布七大应用场景,四大领先技术,以及12款领先技术产 ...

  6. JVM第四篇之益处、常用java工具

    1.StackOverFlowError:栈溢出 1)实例:下面代码报java.lang.StackOverError public class StackeOverFlowTest{public s ...

  7. 第四篇 | C语言中bool类型数据应用

    代码展示: //为了描述逻辑的真假问题,引入关键字_Bool 描述逻辑类型, //在stdbool.h中定义bool代表_Bool,定义关键字true和false. #include<stdio ...

  8. 《钻哥学管理之开启篇:技术+业务+管理》(Yanlz+Unity+SteamVR+云技术+5G+AI=VR云游戏=技术+业务+管理+使命必达+DF17+立钻哥哥+==)

    <钻哥学管理之开启篇:技术+业务+管理> <钻哥学管理之开启篇:技术+业务+管理> 版本 作者 参与者 完成日期 备注 YanlzManager_Open_V01_1.0 严立 ...

  9. AI公开课:18.05.05 施尧耘(阿里云量子技术CS)—清华AI第四讲之《人工智能与量子计算》Quantum课堂笔记——带你了解量子计算

    AI公开课:18.05.05 施尧耘(阿里云量子技术CS)-清华AI第四讲之<人工智能与量子计算>Quantum课堂笔记--带你了解量子计算 导读 清华大学"人工智能前沿与产业趋 ...

最新文章

  1. 为什么说比特币的交易属性优于储值属性
  2. SqlServer 2014 还原数据库时提示:操作系统返回了错误5,,拒绝访问
  3. 00030_ArrayList集合
  4. mysql 数据检查_mysql数据一致性检查及修复
  5. 【差分隐私的Advanced composition到底是什么?】差分隐私系统学习记录(四)
  6. Android UI 优化——使用HierarchyViewer工具
  7. 大屏监控系统实战(5)-父工程搭建及前端相关配置
  8. 第三篇:白话tornado源码之请求来了
  9. 图解 TCP IP 协议:三次握手、四次挥手
  10. 智能优化算法:乌燕鸥优化算法-附代码
  11. 【JavaP6大纲】MySQL篇:为什么要分库分表(设计高并发系统的时候,数据库层面该如何设计)?用过哪些分库分表中间件?不同的分库分表中间件都有什么优点和缺点?你们具体是如何对数据库如何进行垂直拆分
  12. 中国地区2012年第一季度网络安全威胁报告
  13. LightOJ 1224 DNA Prefix(字典树)
  14. 使用Navicat快速复制所有表的表名或字段名
  15. 统一语言为什么不能统一(一)
  16. 2022年建筑电工(建筑特殊工种)考试技巧及建筑电工(建筑特殊工种)复审模拟考试
  17. 解密中国互联网企业创始人,程序员打下半壁江山
  18. Unity dotween YoYo循环
  19. C# FileSystemWatcher文件监控
  20. 利用阿里云轻量服务器实现frp内网穿透(Mac远程控制win)

热门文章

  1. 1.2 安装wdcp
  2. [日推荐]『穷游智能攻略』国外游最佳拍档
  3. thinkphp PHPExcel 导入数据
  4. 奇虎360发财报,搜索发展如何?
  5. twice论文-深度估计-BA_NET
  6. Q4营收远超市场预期,唯品会回归“百亿美元大户”躲过倒春寒?
  7. Swiper4.0:H5手机端滑屏判断当前页Index并且触发动画(slideChangeTransitionEnd与swiper.activeIndex)
  8. 记一次java面试(小黑鱼)
  9. python中else是什么意思中文翻译_else是什么意思
  10. 西部矿业(601168):整合湖北铅锌资源