点云旋转平移介绍,请参考上一节:点云旋转平移(一)—基础知识介绍_Coding的叶子的博客-CSDN博客。

本节所使用的示例pcd点云文件请参考:pcd格式点云样例文件-深度学习文档类资源-CSDN下载。

1 python open3d点云旋转函数

open3d中点云的平移函数为rotate。其函数原型如下所示:

pcd.rotate(R, center=(20, 0, 0))

第二个参数是旋转中心,即围绕哪个点进行旋转。如果不指定center的值,默认为点云质心。围绕质心旋转后的点云质心保持不变,可以通过下面的get_center()来定义。

pcd.get_center()

第一个参数R是旋转矩阵。open3d中点云的旋转仍然是通过矩阵运算来完成的,因而需要先获取旋转矩阵。旋转矩阵可以自己进行定义,也可以根据前面博客介绍的欧拉角、旋转向量和四元数计算得到,请参考点云旋转平移(一)—基础知识介绍_Coding的叶子的博客-CSDN博客。open3d提供了这种计算的函数。

1.1 根据欧拉角计算旋转矩阵

根据欧拉角计算旋转矩阵的函数为pcd.get_rotation_matrix_from_xyz(α, β, γ)。如前面介绍的,欧拉角旋转与旋转轴的先后顺序有关。除xyz之外还有xzy、yxz、yzx、zxy和zyx等。

R = pcd.get_rotation_matrix_from_xyz((0, np.pi/2, 0))#绕y轴旋转90°

1.2 根据旋转向量(轴角)计算旋转矩阵

旋转向量用3行1列的列向量(x, y, z).T来表示。那么旋转轴为向量方向,旋转角度为向量模长。根据旋转向量计算旋转矩阵的函数为get_rotation_matrix_from_quaternion(n)。

R = pcd.get_rotation_matrix_from_axis_angle(np.array([0, -np.pi/2, 0]).T)#向量方向为旋转轴,模长等于旋转角度,绕y轴旋转-90°

1.3 根据四元数计算旋转矩阵

根据四元数计算旋转矩阵的函数为get_rotation_matrix_from_quaternion(n)。四元数用4行1列的列向量(w, x, y, z).T来表示。

R = pcd.get_rotation_matrix_from_quaternion(np.array([0, 0, 0, 1]).T)#绕x轴旋转180°

2 示例程序

注意事项:使用rotate进行点云旋转后,原始点云数据会发生变化。如果要用到旋转之前的点云,那么需要复制一份原始点云进行旋转变换。

# -*- coding: utf-8 -*-
"""
乐乐感知学堂公众号
@author: https://blog.csdn.net/suiyingy
"""
import open3d as o3d
from copy import deepcopy
import numpy as npif __name__ == '__main__':file_path = 'rabbit.pcd'pcd = o3d.io.read_point_cloud(file_path)pcd.paint_uniform_color([0.5, 0.5, 0.5])#指定显示为灰色print(pcd)print(pcd.get_center())pcd1 = deepcopy(pcd)#采用欧拉角进行旋转R = pcd.get_rotation_matrix_from_xyz((0, np.pi/2, 0))#绕y轴旋转90°pcd1.rotate(R, center=(20, 0, 0))#旋转点位于x=20处,若不指定则默认为原始点云质心。pcd1.paint_uniform_color([0, 0, 1])#指定显示为蓝色print(pcd1.get_center())print(R)#采用旋转向量(轴角)进行旋转pcd2 = deepcopy(pcd)R = pcd.get_rotation_matrix_from_axis_angle(np.array([0, -np.pi/2, 0]).T)#向量方向为旋转轴,模长等于旋转角度,绕y轴旋转-90°pcd2.paint_uniform_color([0, 1, 0])#指定显示为绿色pcd2.rotate(R, center=(20, 0, 0))#旋转点位于x=20处,若不指定则默认为原始点云质心。print(pcd2.get_center())print(R)#采用四元数进行旋转pcd3 = deepcopy(pcd)R = pcd.get_rotation_matrix_from_quaternion(np.array([0, 0, 0, 1]).T)#绕x轴旋转180°pcd3.paint_uniform_color([1, 0, 0])#指定显示为红色pcd3.rotate(R, center=(0, 10, 0))#旋转点位于y=10处,若不指定则默认为原始点云质心。print(pcd3.get_center())print(R)# 点云显示o3d.visualization.draw_geometries([pcd, pcd1, pcd2, pcd3], #点云列表window_name="点云旋转",point_show_normal=False,width=800,  # 窗口宽度height=600)  # 窗口高度

3 旋转效果

点云旋转平移(一)—基础知识介绍_Coding的叶子的博客-CSDN博客点云旋转平移基础知识,下一节介绍示例程序。https://blog.csdn.net/suiyingy/article/details/124374486点云旋转平移(一)—基础知识介绍_Coding的叶子的博客-CSDN博客点云旋转平移基础知识,下一节介绍示例程序。https://blog.csdn.net/suiyingy/article/details/124374486

python三维点云从基础到深度学习_Coding的叶子的博客-CSDN博客_3d点云 python从三维基础知识到深度学习,将按照以下目录持续进行更新。https://blog.csdn.net/suiyingy/article/details/124017716

更多三维、二维感知算法和金融量化分析算法请关注“乐乐感知学堂”微信公众号,并将持续进行更新。

点云旋转平移(三)—python open3d点云旋转相关推荐

  1. 点云旋转平移(二)—python open3d点云平移

    点云旋转平移介绍,请参考上一节:点云旋转平移(一)-基础知识介绍_Coding的叶子的博客-CSDN博客. 本节所使用的示例pcd点云文件请参考:pcd格式点云样例文件-深度学习文档类资源-CSDN下 ...

  2. 紫光云服务器芯片,紫光云与新华三半导体共建芯片设计云2.0 携手打造一站式云端芯片平台...

    原标题:紫光云与新华三半导体共建芯片设计云2.0 携手打造一站式云端芯片平台 2021年是芯片设计云元年,行业需求呈现井喷态势,中国云服务新势力脱颖而出,在世界舞台崭露头角,为中国集成电路行业发展插上 ...

  3. 阿里云排名第三,2019年云综合收入355.25亿元

    云排名分析:阿里云排名第三,2019年云综合收入355.25亿元. 从媒体公布的阿里云在2019年收入情况来看,为52亿美元,折合人民币368亿元(2020年4月1日汇率).其中在2019年第四季度中 ...

  4. python open3d点云可视化(本节会根据实际所用持续更新)

    本文为博主原创文章,未经博主允许不得转载. 本文为专栏<python三维点云从基础到深度学习>系列文章,地址为"https://blog.csdn.net/suiyingy/ar ...

  5. 2020年第11期公有云性能评测:盛大云-华东实现“三冠”,百度云虎视眈眈

    本评测报告致力于呈现各行业的整体性能概况,为广大运营商及网民决策提供重要参考依据.目前,测评内容包含北京机房网络质量.云主机性能.券商App行情刷新速度及银行App性能等. 在2020年11月云主机性 ...

  6. Trimble RealWorks处理点云数据(三)之点云抽稀取样

    Trimble RealWorks处理点云数据(二)之点云切割 背景 对于点云数据来说,数据量大是常见的事,但是有些软件不能一次加载大量的数据,在某些情况下,是可以通过对点云数据进行抽稀来达到减少点云 ...

  7. python生成中文词云的代码_[python] 基于词云的关键词提取:wordcloud的使用、源码分析、中文词云生成和代码重写...

    1. 词云简介 词云,又称文字云.标签云,是对文本数据中出现频率较高的"关键词"在视觉上的突出呈现,形成关键词的渲染形成类似云一样的彩色图片,从而一眼就可以领略文本数据的主要表达意 ...

  8. python 横坐标旋转_球坐标/python实现中的旋转问题

    正如我在评论中提到的,我不认为围绕x,y,和{}旋转是最聪明的解决方案,如果你真的想绕一个任意的轴旋转.所以我用四元数.这实际上使用了x.y.z向量,但是qubit解决方案也使用了所有的sine.at ...

  9. 用python生成云词汇_用python生成词云wordcloud

    代码如下: import wordcloud import jieba excludes={"将军","却说","二人","不可& ...

最新文章

  1. 软件测试面试必备的一些基础理论概念
  2. 统计学习方法笔记(李航)———第四章(朴素贝叶斯法)
  3. 我的设计模式之旅(1)——学习的原则和一些笔记
  4. iOS追踪设备和用户
  5. 小甲鱼Python第十九讲课后习题
  6. 【STM32+cubemx】0029 HAL库开发:HMC5883L磁力计的应用(电子指南针)
  7. LintCode 交叉字符串
  8. Labview温度采集系统
  9. excel常用快捷键excel快捷键汇总
  10. 百度云盘客户端去除顶部广告
  11. 阿里icon使用fontclass
  12. 点亮了中行U盾12864屏线 12液晶,附12864详细手册
  13. 纹理(讲得比较详细的文章)
  14. 一键激活windows系统与office(绿色无捆绑装机员激活工具)
  15. MySQL服务器地址为空,win10 mysql没有服务器地址
  16. android getpixel函数,关于Graphics.Blit函数在android上的巨坑
  17. 时间的流逝,流逝了谁的无奈?
  18. 《Android Studio 实战》总结一
  19. Java虚拟机这一块 —— 深入理解java虚拟机(jvm)
  20. 云破月来花弄影-SVG多种技术组合实现

热门文章

  1. 使用IE浏览器,禁止访问,显示 Internet Explorer增强安全配置正在阻止来自下列网站的从应用程序中的内容
  2. ubuntu设置时间为utc标准时间
  3. 编程语言学习——0基础C语言入门
  4. selenium webdriver (python)的基本用法一
  5. mysql 用sql语句创建数据库和表
  6. HDU 2014 青年歌手大奖赛_评委会打分
  7. 怎样在Word中存储高清图,并输出PDF
  8. GPT时代,最令人担心的其实是“塔斯马尼亚效应”
  9. spring的两大核心
  10. linux中的find查找文件或者目录、locate快速定位文件路径