点云可视化方法——PCLVisualizer

0 篇文章 1 订阅

3D点云可视化可以通过rviz,cloud_viewer或者PCLVisualizer等方法进行可视化,这些介绍PCLVisualizer的方法。

首先是加载点云并显示:

#include <iostream>
#include <pcl/visualization/pcl_visualizer.h>


int main(int argc, char **argv)
{
    int showpoint = 0;
    pcl::visualization::PCLVisualizer *viewer;
    //boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer (new pcl::visualization::PCLVisualizer ("3D Viewer"));
    viewer = new pcl::visualization::PCLVisualizer("Cluster viewer");
    viewer->createViewPort (0.0, 0, 0.5, 1.0, showpoint);
    viewer->setBackgroundColor(0, 0, 0);
    
    pcl::PointCloud<pcl::PointXYZ>:: Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
    pcl::io::loadPCDFile ("/home/victor/catkin_ws/src/chapter6_tutorials/data/cup.pcd", *cloud);

    for(int i=0;i<cloud->size();i++)
    {
	cloud->points[i].x=cloud->points[i].x/100.;
	cloud->points[i].y=cloud->points[i].y/100.;
	cloud->points[i].z=cloud->points[i].z/100.;
	//std::cout << cloud.points[i].x << std::endl;

    }
    viewer->addPointCloud<pcl::PointXYZ> (cloud, "Cluster viewer",showpoint);
    viewer->spin();   //这行必须有,不然不会显示点云
    
    return 0;
}


创建点云并显示:


#include <iostream>
#include <pcl/visualization/pcl_visualizer.h>


int main(int argc, char **argv)
{
    int showpoint = 0;
    //pcl::visualization::PCLVisualizer *viewer;
    boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer (new pcl::visualization::PCLVisualizer ("3D Viewer"));
    //viewer = new pcl::visualization::PCLVisualizer("Cluster viewer");
    viewer->createViewPort (0.0, 0, 0.5, 1.0, showpoint);
    viewer->setBackgroundColor(0, 0, 0);
    
    pcl::PointCloud<pcl::PointXYZ> cloud;
    //pcl::io::loadPCDFile ("/home/victor/catkin_ws/src/chapter6_tutorials/data/cup.pcd", cloud);
    cloud.height = 100;
    cloud.width = 100;
    cloud.points.resize(cloud.height * cloud.width);

    for(int i = 0; i < cloud.points.size(); i++){
        cloud.points[i].x = 1024 * rand () / (RAND_MAX + 1.0f);
        cloud.points[i].y = 1024 * rand () / (RAND_MAX + 1.0f);
        cloud.points[i].z = 1024 * rand () / (RAND_MAX + 1.0f);
    }

    for(int i=0;i<cloud.size();i++)
    {
	cloud.points[i].x=cloud.points[i].x/10.;
	cloud.points[i].y=cloud.points[i].y/10.;
	cloud.points[i].z=cloud.points[i].z/10.;
	//std::cout << cloud.points[i].x << std::endl;

    }
    viewer->addPointCloud<pcl::PointXYZ> (cloud.makeShared(), "Cluster viewer",showpoint);
    viewer->spin();
    
    return 0;
}



  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值