PCL提供了两种点云平移、旋转的方式

  • 方式1:使用Matrix4f手动输入坐标平移、旋转矩阵,理解更直观,但易出错
  • 方式2:使用Affine3f定义坐标平移、旋转矩阵,简单且不易出错

代码实现:

#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_cloud.h>
#include <pcl/common/transforms.h>
#include <pcl/visualization/pcl_visualizer.h>int main()
{pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);pcl::PointCloud<pcl::PointXYZ>::Ptr transformed_cloud(new pcl::PointCloud<pcl::PointXYZ>);if (pcl::io::loadPCDFile("1.pcd", *cloud) < 0){PCL_ERROR("目标文件不存在!\n");return -1;}/// 方式1:Matrix4f// 创建矩阵对象transform_1,初始化为4×4单位阵Eigen::Matrix4f transform_1 = Eigen::Matrix4f::Identity();// 定义旋转矩阵,绕z轴float theta = M_PI / 4;       // 旋转弧度transform_1(0, 0) = cos(theta);transform_1(0, 1) = -sin(theta);transform_1(1, 0) = sin(theta);transform_1(1, 1) = cos(theta);// 定义在x轴上的平移,2.5mtransform_1(0, 3) = 2.5;// 打印平移、旋转矩阵std::cout << "方式1: 使用Matrix4f\n";std::cout << transform_1 << std::endl;/// 方式2:Affine3f// 创建矩阵对象transform_2.matrix(),初始化为4×4单位阵Eigen::Affine3f transform_2 = Eigen::Affine3f::Identity();// 定义在x轴上的平移,2.5mtransform_2.translation() << 2.5, 0.0, 0.0;  // 三个数分别对应X轴、Y轴、Z轴方向上的平移// 定义旋转矩阵,绕z轴transform_2.rotate(Eigen::AngleAxisf(theta, Eigen::Vector3f::UnitZ())); //同理,UnitX(),绕X轴;UnitY(),绕Y轴.// 打印平移、旋转矩阵std::cout << "\n方式2: 使用Affine3f\n";std::cout << transform_2.matrix() << std::endl;   //注意:不是transform_2/// 执行转换// transform_1 或者 transform_2 都可以实现相同的转换pcl::transformPointCloud(*cloud, *transformed_cloud, transform_2); //注意:不是transform_2.matrix()// Visualization可视化std::cout << "点云颜色:\n";std::cout << "原始点云:白色\n" << "平移、旋转后点云:红色\n";pcl::visualization::PCLVisualizer viewer("矩阵转换实例");/// 定义点云RGB颜色// 原始点云附色pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZ> cloud_color(cloud, 255, 255, 255);viewer.addPointCloud(cloud, cloud_color, "original_cloud");// 变换后点云附色pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZ> transformed_cloud_color(transformed_cloud, 250, 0, 0);viewer.addPointCloud(transformed_cloud, transformed_cloud_color, "transformed_cloud");viewer.addCoordinateSystem(1.0, "cloud", 0);   //定义坐标系viewer.setBackgroundColor(0.05, 0.05, 0.05, 0); // 设置背景颜色viewer.setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 2, "original_cloud");viewer.setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 2, "transformed_cloud");//viewer.setPosition(800, 400); // 设置可视化窗口位置while (!viewer.wasStopped()){ // Display the visualiser until 'q' key is pressedviewer.spinOnce();}return 0;
}

PCL:点云平移、旋转相关推荐

  1. PCL 点云的旋转与平移

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

  2. PCL点云的旋转平移矩阵

    目录 (一)左乘右乘 1.左乘 2.右乘 (二)旋转平移矩阵公式 1.绕X轴逆时针旋转角度θ 2.绕Y轴逆时针旋转角度θ 3.绕Z轴逆时针旋转角度θ 4.平移 (三)旋转平移矩阵的逆 (四)PCL实现 ...

  3. PCL 点云平移与旋转

    这个博主写的很好,推荐大家看看其系列文章 链接:http://www.pianshen.com/tag/PCL/ #include <iostream>#include <pcl/i ...

  4. PCL点云处理算法目录

    一.点云配准 PCL中的点云配准方法:https://www.sohu.com/a/321034987_715754 点云配准资源汇总:https://mp.weixin.qq.com/s/rj090 ...

  5. 《PCL点云库学习VS2010(X64)》Part 34 旋转平移矩阵用法

    <PCL点云库学习&VS2010(X64)>Part 34 旋转平移矩阵用法 1.变换与投影矩阵讲解: https://en.wikipedia.org/wiki/Transfor ...

  6. 点云处理--点云平移和旋转

    1.版本要求 版本: >PCL1.5 2.简介 1)有时我们需要平移点云到我们需要的位置,例如:进行ICP配准前需要移动待配准点云到目标点云附近. 2)有时我们需要旋转点云到我们需要的位置. 3 ...

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

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

  8. PCL点云变换与移除NaN

    对点云的操作可以直接应用变换矩阵,即旋转,平移,尺度,3D的变换就是要使用4*4 的矩阵,例如:       等等模型 在这里直接使用程序开实现一个点云的旋转,新建文件matrix.cpp #incl ...

  9. PCL 点云特征描述与提取

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者:开着拖拉机唱山歌 链接:https://zhuanlan.zhihu.com/p/1032192 ...

最新文章

  1. 8核32g mysql性能_MySQL性能优化之参数配置
  2. js-移动端android浏览器中input框被软键盘遮住的问题解决方案
  3. boost.asio系列——io_service
  4. 简化 Hadoop 2.4.1 Eclpse 插件编译【原创】
  5. PID控制器改进笔记之三:改进PID控制器之正反作用
  6. IDEA项目创建Mapper的xml文件的方法
  7. VOC2007和COCOmAP计算
  8. spring cloud拓扑图
  9. MapGIS 的一些小总结
  10. 程序员慵懒的周末:不想出门还想吃肯德基香辣鸡翅?
  11. cs字体样式和盒子模型学习1
  12. 写给一个外汇女交易员的信(连载六)
  13. 5G聚合路由器助力无人机监控盲区打好疫情阻击战
  14. Processing基础---绘制基本图形、颜色
  15. 神奇的口袋(回溯DP)
  16. OpenMV扫码识别
  17. 小程序Promise不支持finally解决方案
  18. GO语言与其他语言初步比较
  19. typecho 不能上传附件,上传附件失败
  20. Scrapy框架之Crawlspider的使用

热门文章

  1. java阿拉伯转大写_java 中大写数字与阿拉伯数之间的相互转换 | 学步园
  2. 解决Office 打开Excel 空白问题
  3. 基于GOP的时域滤波
  4. 身份验证绕过漏洞分析
  5. ie6下z-index不起作用?
  6. excel 查询 表关联_在Excel中计算查询表
  7. AXI Quad SPI读写Flash做远程升级
  8. Gym - 102920 C - Dessert Café (思维)
  9. 大数据行业前景如何?
  10. JAVA-生成二维码图片