点云可视化

pcl::visualization::CloudViewer 与 pcl::visualization::PCLVisualizer的区别

  • pcl::visualization::CloudViewer是一个简单的点云查看器类,提供了一个简单的接口来在窗口中显示点云数据。它可以快速地显示点云,并且只需要几行代码即可实现简单的点云查看功能。它通常用于快速的点云展示和可视化需求较简单的场景。

  • pcl::visualization::PCLVisualizer是一个更为灵活和强大的点云可视化工具类。它提供了更多的功能和选项,可以进行更复杂的点云可视化和交互操作。通过PCLVisualizer,可以实现添加多个点云,设置不同的渲染属性(颜色、大小、透明度等),添加文本标签,显示坐标轴,添加法线、曲线、平面等等。它可以满足更高级和更定制化的点云可视化需求。

总结起来,pcl::visualization::CloudViewer适用于简单的点云查看和快速的可视化需求,而pcl::visualization::PCLVisualizer则适用于更复杂、灵活和定制化的点云可视化和交互需求,它提供了更多的选项和功能,但也需要更多的代码来实现。

#include <pcl/visualization/cloud_viewer.h>
#include <iostream>
#include <pcl/io/io.h>
#include <pcl/io/pcd_io.h>

int user_data;
void viewerOneOff(pcl::visualization::PCLVisualizer &viewer){
    viewer.setBackgroundColor(1.0, 0.5, 1.0);


    pcl::PointXYZ o; // 球体中心位置
    o.x = 1.0;
    o.y = 1.0;
    o.z = 1.0;
    viewer.addSphere(o, 0.25, "Sphere", 0); //添加圆球几何对象
    std::cout << "i only run once" << std::endl;
}

void viewerPsycho(pcl::visualization::PCLVisualizer &viewer)
{
    static unsigned count = 0;
    std::stringstream ss;
    ss << "Once per viewer loop: " << count++;
    viewer.removeShape("text", 0);
    viewer.addText(ss.str(), 200, 300, "text", 0); // 添加文字

    user_data++;
}

int main(){
    // 从文件中加载点云数据
    pcl::PointCloud<pcl::PointXYZRGBA>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZRGBA>);
    pcl::io::loadPCDFile("/home/jason/file/pcl-learning/data/room_scan1.pcd", *cloud);

    //
    pcl::visualization::CloudViewer viewer("cloud Viewer"); // 也可以pcl::visualization::PCLVisualizer,这个支持自定义一些东西
    viewer.showCloud(cloud);

    // 该注册函数在渲染输出时只执行一次
    viewer.runOnVisualizationThreadOnce(viewerOneOff); // 只运行一次的业务逻辑i可以放在viewerOneOff函数里,比如设置背景、画各三维球等等

    // 该注册函数在渲染输出时每次都调用
    viewer.runOnVisualizationThread(viewerPsycho); // 需要每轮渲染的业务逻辑可以放在viewerPsycho
    // 现在的业务逻辑仅仅是完成用户数据的单调增加,此处还可以完成更多丰富的操作

    while (!viewer.wasStopped()) {
        //此处可以添加其他处理
        user_data++;
    }
    return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值