点云可视化方法——PCLVisualizer_rviz pcl::visualization::pclvisualizer-程序员宅基地

技术标签: c++  pcl  

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;
}



版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/LordofRobots/article/details/72510232

智能推荐

java里添加背景图片,Java怎么添加背景图片-程序员宅基地

文章浏览阅读2k次。标签:首先,导入相关的包:import java.awt.BorderLayout;import java.awt.Container;import javax.swing.ImageIcon;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;也可以用:import java.awt.*;im..._java添加背景图片代码

Docker安装dnsmasq服务及相关配置_dnsmasq docker-程序员宅基地

文章浏览阅读1.9k次。概述Dnsmasq是一轻量级的DHCP和DNS服务应用。Dnsmasq官方官方地址: http://www.thekelleys.org.uk/dnsmasq/doc.html快速搭建_dnsmasq docker

Flink CDC 系列 - 同步 MySQL 分库分表,构建 Iceberg 实时数据湖_flink cdc 分库分表-程序员宅基地

文章浏览阅读3.5k次。在 OLTP 系统中,为了解决单表数据量大的问题,通常采用分库分表的方式将单个大表进行拆分以提高系统的吞吐量。但是为了方便数据分析,通常需要将分库分表拆分出的表在同步到数据仓库、数据湖时,再合并成一个大表。这篇教程将展示如何使用 Flink CDC 构建实时数据湖来应对这种场景,本教程的演示基于 Docker,只涉及 SQL,无需一行 Java/Scala 代码,也无需安装 IDE,你可以很方便地在自己的电脑上完成本教程的全部内容。接下来将以数据从 MySQL 同步到 Iceberg[1] 为例_flink cdc 分库分表

(1.2)、MyBatis介绍及其环境搭建-程序员宅基地

文章浏览阅读197次。MyBatis介绍:数据库持久化概念:数据库持久化将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中数据模型的统称。例如,文件的存储、文件的存储、数据的读取等都是数据持久化操作。数据模型可以是任何数据结构或对象模型,存储模型可以是关系模型、XML、二进制流等。MyBatis框架简介:  MyBatis的前身是iBatis,本是Apche的一个开源项目,2010年这个项目有..._mybatis介绍及其环境搭建

微信js浏览器查看网络状态_微信游览器判断网络状态-程序员宅基地

文章浏览阅读3k次。window.onload = function() { document.addEventListener("WeixinJSBridgeReady", onWeixinReady, false); }function onWeixinReady() { WeixinJSBridge.invoke('getNetworkType',{}, function(e){ WeixinJSBr_微信游览器判断网络状态

堆溢出问题快速调试_reuse delay of heap object-程序员宅基地

文章浏览阅读349次。首先来看下问题代码,这里最后的空字符发生了溢出。来看一下出现的问题以及如何调试。上面写明是堆链中第41个堆块且地址在0x00382a700出发生了错误。这种情况下别急着终止,点击重试就会断在出问题的位置。点重试后断到了这里往上拉一拉,寻找函数名,或者直接查看调用堆栈发现是断在_free_dbg函数中,这个函数是free()的底层,所以可以断定一定是释放的时候出了问题直接在free()函数上下断点然后运行过去,发现第41块堆块的下溢标志受损了。就是strcpy导致的。_reuse delay of heap object

随便推点

cocos2d-x 读取plist文件_cocos 获取plist下面的frames-程序员宅基地

文章浏览阅读2.1k次。最近在学cocos,有很多不错的游戏都是用cocos实现的,其实貌似捕鱼达人4月份流水账有3500W,好奇之下,看了看下捕鱼达人里的一些资源,顺便试着学习下plist的用法。(接下来用到的资源都在捕鱼达人的APK内,直接解压了就能看到。)我挑了FishActor-Small_hv.plist和它对应的png来看看下。FishActor-Small_hv.plist内部的格式是这_cocos 获取plist下面的frames

Java数据库小项目02--管家婆项目-程序员宅基地

文章浏览阅读363次。目录项目要求开发环境搭建工具类JDBCUtils创建管家婆数据表项目分层MainApp层MainView层ZhangWuController层ZhangWuService层ZhangWuDao层ZhangWu bean层注:一个小技巧,写注释要空一格,要不然不容易导包进去项目要求开发环境搭建mysql-connector-j...

LabVIEW界面设计之控件美化_labview前面板美观设计-程序员宅基地

文章浏览阅读4.7w次,点赞50次,收藏258次。本文内容来自公众号:钟博士LabVIEW工作室,欢迎关注!在这个注重颜值的时代,软件的界面设计与美化不容忽视。LabVIEW提供了一系列可供使用的前面板控件,如下图所示,在前面板控件选板中,有新式、银色、系统、经典等系列控件,这些属于LabVIEW自带的控件,每个系列都包括数值、布尔量、字符串、枚举、表格、数组等各种数据类型的控件。另外,还可以从网上下载控件使用,图中红框内为NI官网下载的..._labview前面板美观设计

我有佳人-程序员宅基地

文章浏览阅读1.9k次。我有佳人隔窗而居,今有伊人明月之畔。轻歌柔情冰壶之浣,涓涓清流梦入云端。美人如娇温雅悠婉,目遇赏阅适而自欣。百草层叠疏而有致,此情此思怀彼佳人。念所思之唯心叩之,踽踽彳亍寤寐思服。行云如风逝而复归,佳人一去莫知可回?深闺冷瘦独自徘徊,处处明灯影还如只。推窗见月疑是归人,阑珊灯火托手思忖。庐居闲客而好品茗,斟茶徐徐漫漫生烟。 我有佳人在水之畔,瓮载渔舟浣纱归还。明月相照月色还低,浅近芦苇深

关于梦想是计算机的作文英语,关于梦想的英语作文(精选11篇)-程序员宅基地

文章浏览阅读202次。每个人都有梦想,那么你的有什么梦想呢,下面为大家分享几篇关于Dream (梦想)的英语作文,欢迎阅读关于Dream (梦想)的英语作文DreamDream is strength. The strength can bring us wherever we want to get to and it can bring us a lot of wonders on our way to the p..._我的电脑ai梦的英语作文

win10 睡眠模式,设置密码唤醒失效怎么办?-程序员宅基地

文章浏览阅读3.9k次。win10系统,晚上回家设置睡眠模式,设置了密码,但是第二天开启电脑,直接进入桌面,不需要登录密码。原因:设置了移动热点导致这个问题出现解决:关闭移动热点,睡眠模式用密码唤醒成功。希望可以帮助到你!...

推荐文章

热门文章

相关标签