1.版本要求

版本: >PCL1.5

2.简介

1)有时我们需要平移点云到我们需要的位置,例如:进行ICP配准前需要移动待配准点云到目标点云附近。
2)有时我们需要旋转点云到我们需要的位置。

3.数据

本例中使用的点云数据(test.pcd)请见百度网盘分享。
链接:https://pan.baidu.com/s/1DaMUtSu8NVvRu1rN4SSagA
提取码:ls97

4.代码

4.1平移点云代码

#include <pcl/point_types.h>
#include <pcl/io/pcd_io.h>
#include <pcl/common/transforms.h>
#include <pcl/visualization/cloud_viewer.h>int    main(int argc, char* argv[])
{pcl::PCDReader reader;pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);reader.read("test.pcd", *cloud); //读取点云std::cerr << "test point cloud has: " << cloud->size() << " points." << std::endl;Eigen::Affine3f transformation = Eigen::Affine3f::Identity();  //创建平移旋转变换矩阵。本例只演示平移点云。transformation.translation() << 10.0, 0.0, 0.0;   //沿x轴方向平移10m//float theta = M_PI / 2; //transformation.rotate(Eigen::AngleAxisf(theta, Eigen::Vector3f::UnitX()));  //绕x轴旋转90°std::cout << transformation.matrix() << std::endl;pcl::PointCloud<pcl::PointXYZ>::Ptr transformed_cloud(new pcl::PointCloud<pcl::PointXYZ>());pcl::transformPointCloud(*cloud, *transformed_cloud, transformation);  //平移点云pcl::visualization::PCLVisualizer viewer("Cloud Viewer");viewer.setBackgroundColor(0, 0, 0);viewer.addCoordinateSystem(1.0);pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZ> single_color1(cloud, 255, 255, 255);viewer.addPointCloud<pcl::PointXYZ>(cloud, single_color1, "cloud1");  //显示原始点云(白色)viewer.setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 1, "cloud1");pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZ> single_color2(transformed_cloud, 255, 0, 0);viewer.addPointCloud<pcl::PointXYZ>(transformed_cloud, single_color2, "cloud2");  //显示平移后的点云(红色)viewer.setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 1, "cloud2");viewer.spin();return (0);
}

4.2旋转点云代码

#include <pcl/point_types.h>
#include <pcl/io/pcd_io.h>
#include <pcl/common/transforms.h>
#include <pcl/visualization/cloud_viewer.h>int    main(int argc, char* argv[])
{pcl::PCDReader reader;pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);reader.read("test.pcd", *cloud); //读取点云std::cerr << "test point cloud has: " << cloud->size() << " points." << std::endl;Eigen::Affine3f transformation = Eigen::Affine3f::Identity();  //创建平移旋转变换矩阵。本例只演示旋转点云。//transformation.translation() << 10.0, 0.0, 0.0;   //沿x轴方向平移10mfloat theta = M_PI / 2; transformation.rotate(Eigen::AngleAxisf(theta, Eigen::Vector3f::UnitX()));  //绕x轴旋转90°std::cout << transformation.matrix() << std::endl;pcl::PointCloud<pcl::PointXYZ>::Ptr transformed_cloud(new pcl::PointCloud<pcl::PointXYZ>());pcl::transformPointCloud(*cloud, *transformed_cloud, transformation);  //旋转点云pcl::visualization::PCLVisualizer viewer("Cloud Viewer");viewer.setBackgroundColor(0, 0, 0);viewer.addCoordinateSystem(1.0);pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZ> single_color1(cloud, 255, 255, 255);viewer.addPointCloud<pcl::PointXYZ>(cloud, single_color1, "cloud1");  //显示原始点云(白色)viewer.setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 1, "cloud1");pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZ> single_color2(transformed_cloud, 255, 0, 0);viewer.addPointCloud<pcl::PointXYZ>(transformed_cloud, single_color2, "cloud2");  //显示旋转后的点云(红色)viewer.setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 1, "cloud2");viewer.spin();return (0);
}

5.效果

5.1平移点云效果

5.2旋转点云效果

点云处理--点云平移和旋转相关推荐

  1. PCL:点云平移、旋转

    PCL提供了两种点云平移.旋转的方式 方式1:使用Matrix4f手动输入坐标平移.旋转矩阵,理解更直观,但易出错 方式2:使用Affine3f定义坐标平移.旋转矩阵,简单且不易出错 代码实现: #i ...

  2. 3D点云变换(平移、旋转、缩放)C++实现

    在前一篇文章3D点云变换(平移.旋转.缩放)以及python实现中详细介绍了点云的一些基础变换原理,也用python做了实现,这次我们用C++来做点云的平移.缩放.旋转变换. #include < ...

  3. qgraphicsview鼠标移动图片_交互式QGraphicsView(平移/缩放/旋转)-阿里云开发者社区...

    简述 Graphics View提供了一个平台用于大量自定义 2D 图元的管理与交互框架包括一个事件传播架构支持场景 Scene 中的图元 Item 进行精确的双精度交互功能.Item 可以处理键盘事 ...

  4. [Python从零到壹] 三十八.图像处理基础篇之图像几何变换(平移缩放旋转)

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  5. uniCloud云开发入门:了解云函数、云数据库、云存储的基本概念

    Hello uniCloud! 第一个云函数,客户端访问此接口时返回一个"Hello uniCloud!". 云函数hello.js代码如下: 'use strict';//mai ...

  6. 1h2g云服务器做网站,云服务器1h2g

    云服务器1h2g 内容精选 换一换 IP地址组是多个IP地址的集合,可被安全组规则引用,可统一管理具有相同安全要求或需要频繁修改的IP地址.通过使用IP地址组,可有效应对需要重复多次编辑安全组规则的场 ...

  7. 云评测、云监测、云加速,性能魔方mmTrix全球速度最快

    在移动互联网高速发展的今天,互联网企业如果要实现业务增长,在激烈的市场竞争中站稳脚跟,必须要尽可能的提高用户体验和产品影响力.而要达实现这个目标,产品应用性能质量的好坏往往起到重要作用,APM服务受到 ...

  8. 当最懂 5G 的中国移动遇见云,移动云专题赛正式启动!

    根据<中国云计算产业发展白皮书>预测,2023年中国云计算产业规模将超过3000亿人民币,其中,中国政府和企业上云率将超过60%.在国家新基建战略的大力推动下,5G和云计算迎来了巨大的发展 ...

  9. 推动健全云生态 阿里云锐不可当

    本文讲的是推动健全云生态 阿里云锐不可当,2012年第二届阿里云开发者大会上,阿里云计算携众多云上实践合作伙伴共同向外界展示了云计算的实践成果,来自互联网.云计算.电信运营商.消费电子.移动终端等领域 ...

  10. 华为云客户端_华为云新一代S6云服务器缘何深受中小企业青睐?

    在移动互联网时代,随着信息量和数据量的迅猛增长,更多企业对数据的处理能力和业务的扩展提出了更高要求.因此,有越来越多的企业选择把业务和数据迁移到云端,通过"云计算服务提供商"购买相 ...

最新文章

  1. 开源项目PullToRefresh详解(一)——PullToRefreshListView
  2. linux 信号 core,Shell 信号发送与捕捉
  3. ZOJ 3776 A - Pokemon Master 签到水题
  4. hive中如何控制mapper的数量
  5. 我的 FPGA 学习历程(11)—— 实验:按键消抖
  6. 专栏 | 基于 Jupyter 的特征工程手册:特征选择(一)
  7. 土木工程和计算机专硕,第一次发帖 关于大工土木专硕
  8. 惠普电脑u盘重装系统步骤_hp怎么用u盘重装系统|hp优盘装系统教程
  9. Redis雪崩,击穿,穿透产生原因以及其解决方案
  10. 全程pwm调光_「解疑」最近各家炒得很火的 DC 和 PWM 调光是什么鬼
  11. 想拿腾讯、阿里、字节跳动offer,除了技术还需要哪些成长?
  12. 如何在3ds max中轻松快速地为枕头建模?
  13. win10+RTX3050ti+TensorFlow+cudn+cudnn配置深度学习环境
  14. Nat Commun:中国中医科学院黄璐琦院士/首都医科大学高伟教授团队联合解析雷公藤甲素生物合成关键C-14位羟化机制...
  15. 明星为啥选嫁官家富家?
  16. 生成网络论文阅读:PGGAN(一):论文速览
  17. 字模c语言,[C/C++]字模的解析(视频)
  18. Python爬虫的实际运用之:破解滑动验证码
  19. 直播客的张鑫焱的新创意
  20. 树莓派python编程小车_Sunny的树莓派小车DIY教程(附视频)

热门文章

  1. HEIF 和 HEVC 研究
  2. Spring WebJars 教程
  3. 禁忌搜索算法求解TSP旅行商问题Matlab实现
  4. mpvue 搭建整理
  5. 六-体系结构 Architecture
  6. vi ~/.bashrc如何保存退出
  7. 深度解析CentOS通过日志反查入侵
  8. zookeeper和k8s_Kubernetes(k8s)运行ZooKeeper,一个分布式系统协调器
  9. CentOS修改Tomcat端口号
  10. 【观察】让数字化转型之路越走越宽,DXC Technology释放新价值