首页 > 其他分享 >点云学习笔记14——PCL点云文件投影到平面

点云学习笔记14——PCL点云文件投影到平面

时间:2024-11-11 11:47:10浏览次数:3  
标签:PCL 14 viewer projected coefficients pcl 点云 cloud

#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/ModelCoefficients.h>
#include <pcl/filters/project_inliers.h>
#include <pcl/visualization/pcl_visualizer.h>
#include <boost/thread/thread.hpp>

int main()
{
    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);

    pcl::io::loadPCDFile<pcl::PointXYZ>("F:\\9.pcd", *cloud);

    //设置平面模型系数,这里设置为X-Y平面(Z=0)
    pcl::ModelCoefficients::Ptr coefficients(new pcl::ModelCoefficients());
    coefficients->values.resize(4); // 确保系数数组有4个元素
    coefficients->values[0] = 0;  // 设置平面系数 Y-Z
    coefficients->values[1] = 0;  // 设置平面系数 b,设置该参数就是投影到X-Z
    coefficients->values[2] = 1.0;  // 设置平面系数 c,投影到 X-Y 平面
    coefficients->values[3] = 0;  // 设置平面常数 d

    // 创建投影滤波器对象
    pcl::ProjectInliers<pcl::PointXYZ> proj;
    proj.setModelType(pcl::SACMODEL_PLANE);// 设置模型类型为平面
    proj.setInputCloud(cloud);// 设置输入点云
    proj.setModelCoefficients(coefficients);// 设置平面模型系数
    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_projected(new pcl::PointCloud<pcl::PointXYZ>);
    proj.filter(*cloud_projected);  // 将点云投影到平面上

    // 保存投影后的点云
    pcl::io::savePCDFileBinary("F:\\9999.pcd", *cloud_projected);

    // 可视化原始点云和投影后的点云
    pcl::visualization::PCLVisualizer::Ptr viewer(new pcl::visualization::PCLVisualizer("Point Cloud Visualization"));

    int vp1, vp2;
    viewer->createViewPort(0.0, 0.0, 0.5, 1.0, vp1);// 左半部分视口
    viewer->setBackgroundColor(0, 0, 0, vp1);  // 设置视口背景为白色
    viewer->addText("Original", 10, 10, "vp1_text", vp1);// 在视口中添加文本
    pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZ> cloud_color(cloud, 255, 0, 0);  // 设置点云颜色为红色
    viewer->addPointCloud(cloud, cloud_color, "original_cloud", vp1);// 将原始点云添加到视口

    viewer->createViewPort(0.5, 0.0, 1.0, 1.0, vp2);
    viewer->setBackgroundColor(0, 0, 0, vp2);  // 浅灰色背景
    viewer->addText("Projected", 10, 10, "vp2_text", vp2);
    pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZ> projected_color(cloud_projected, 0, 255, 0);  // 绿色
    viewer->addPointCloud(cloud_projected, projected_color, "projected_cloud", vp2);

    while (!viewer->wasStopped())
    {
        viewer->spinOnce(100);
        boost::this_thread::sleep(boost::posix_time::microseconds(100000));// 线程休眠,避免占用过多CPU资源
    }

    return 0;
}

标签:PCL,14,viewer,projected,coefficients,pcl,点云,cloud
From: https://blog.csdn.net/qq_64095888/article/details/143677821

相关文章

  • 实验14:代理模式
    [实验任务一]:婚介所婚介所其实就是找对象的一个代理,请仿照我们的课堂例子“论坛权限控制代理”完成这个实际问题,其中如果年纪小于18周岁,婚介所会提示“对不起,不能早恋!”,并终止业务。实验要求:1.提交类图;2.提交源代码;3.注意编程规范。 1.类图 2.源代码People.java......
  • # 学期(2024-2025-1) 学号(20241420) 《计算机基础与程序设计》第七周学习总结
    学期(2024-2025-1)学号(20241420)《计算机基础与程序设计》第七周学习总结作业信息这个作业属于哪个课程<班级链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里<作业要求链接>(2024-2025-1计算机基础与程序设计第七周作业)这个作业的目标<计算机科学概论......
  • 2024-2025-1 20241425 《计算机基础与程序设计》第7周学习总结
    2024-2025-120241425《计算机基础与程序设计》第7周学习总结作业信息这个作业属于哪个课程[2024-2025-1-计算机基础与程序设计](https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP)这个作业要求在哪里<作业要求的链接>(如2024-2025-1计算机基础与程序设计第一......
  • 2024-2025-1 20241406刘书含《计算机基础与程序设计》第七周学习总结
    作业信息作业课程 2024-2025-1-计算机基础与程序设计作业要求 2024-2025-1计算机基础与程序设计第七周作业作业目标 数组与链表,基于数组和基于链表实现数据结构,无序表与有序表,树,图,子程序与参数作业正文 2024-2025-120241328《计算机基础与程序设计》第七周学习总结教材学习......
  • 2024-2025-1 20241408陈烨南《计算机基础与程序设计》第七周学习总结
    这个作业属于哪个课程2024-2025-1-计算机基础与程序设计)这个作业要求在哪里https://www.cnblogs.com/rocedu/p/9577842.html#WEEK07这个作业的目标数组与链表、基于数组和基于链表实现数据结构、无序表与有序表、树、图、子程序与参数作业正文本博客链接教......
  • # 学期2024-2025-1 学号20241416《计算机基础与程序设计》第7周学习总结
    这个作业属于哪个课程 https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP/这个作业要求在哪里 https://www.cnblogs.com/rocedu/p/9577842.html#WEEK07这个作业的目标 数组与链表、基于数组和基于链表实现数据结构、无序表作业正文 https://www.cnblogs.com/rockytyh/p/1......
  • 2024-2025-1 20241421 《计算机基础与程序设计》第七周学习总结
    作业信息这个作业属于哪个课程 2024-2025-1-计算机基础与程序设计这个作业要求在哪里 2024-2025-1计算机基础与程序设计第七周作业这个作业的目标 数组与链表、基于数组和基于链表实现数据结构、无序表与有序表、树、图、子程序与参数作业正文 https://www.cnblogs.com/118qa......
  • 2024-2025-1 20241411 《计算机基础与程序设计》第七周学习总结
    作业信息这个作业属于哪个课程https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP/这个作业要求在哪里https://www.cnblogs.com/rocedu/p/9577842.html#WEEK07这个作业的目标数组与链表、基于数组和基于链表实现数据结构、无序表与有序表、树、图、子程序与参......
  • # 学期2024-2025-1 学号20241405 《计算机基础与程序设计》第7周学习总结
    作业信息|这个作业属于哪个课程|[2024-2025-1-计算机基础与程序设计]https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP||这个作业要求在哪里|https://www.cnblogs.com/rocedu/p/9577842.html#WEEK07||这个作业的目标|数组与链表基于数组和基于链表实现数据结构||作业......
  • 45-best-time-to-buy-and-sell-stock-with-cooldown 力扣 714. 买卖股票的最佳时机包
    买卖股票系列【leetcode】40-best-time-to-buy-and-sell-stock力扣121.买卖股票的最佳时机【leetcode】41-best-time-to-buy-and-sell-stock-ii力扣122.买卖股票的最佳时机II【leetcode】42-best-time-to-buy-and-sell-stock-iii力扣123.买卖股票的最佳时机II......