PCL学习笔记1
先贴一段代码,从别处抄来的
#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include<pcl/visualization/cloud_viewer.h>
int
main(int argc, char** argv)
{
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
if (pcl::io::loadPCDFile<pcl::PointXYZ>(argv[1], *cloud) == -1)
{
PCL_ERROR("Couldn't read file test_pcd.pcd \n");
return (-1);
}
std::cout << "Loaded "
<< cloud->width * cloud->height
<< " data points from test_pcd.pcd with the following fields: "
<< std::endl;
#if 0
for (size_t i = 0; i < cloud->points.size(); ++i)
std::cout << " " << cloud->points[i].x
<< " " << cloud->points[i].y
<< " " << cloud->points[i].z << std::endl;
#endif pcl::visualization::CloudViewer viewer("test");
viewer.showCloud(cloud);
while (!viewer.wasStopped()){}
return (0);
}
这段代码是读取了一个pcd文件
pcl::io::loadPCDFile<pcl::PointXYZ>(argv[1],*cloud);
将其存储到cloud之中,再通过
pcl::visualization::CloudViewer viewer
的
showCloud(cloud)
函数,将其显示到屏幕之中。
我这里读取的是pcl的一个logo

看懂这段代码需要一定基础的C++知识
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
pcl是一个命名空间,PointCloud是一个模板类,Ptr是一个boost库中的共享指针类型(shared_ptr,是一种智能指针).
所以这段代码就是定义了一个智能指针cloud,这个指针指向PointCloud类型,这个PointCloud类型以pcl::PointXYZ为参数。
PointXYZ是一种结构体,这中结构体类型应该是包含了点的三维坐标数据(但是我没找到这个结构体定义中的三维坐标数据变量在哪里。。)
cloud(new pcl::PointCloud<pcl::PointXYZ>)是智能指针的初始化(还不是很熟悉,不知道对不对,姑且这么叫吧),反正就是让cloud指向了一个新申请的PointCloud类型的对象。
pcl::io::loadPCDFile(),明显,这是读取pcd文件的函数,将pcd文件中的数据读取到cloud所指的对象中。
后面的std::cout这个不用说了,标准输出,即输出到屏幕,
cloud->width*cloud->height,这里是输出点云的个数,这里有点小知识:
点云数据集分为有序点云数据集和无序点云数据集,有序的点云数据集可以想成矩阵形式的分行分列,width就是这个数据集的宽度,height就是这个数据集的高度,是二维形式的,width*height就是点的个数。而无序点云数据集就是一维形式的,width就是点的个数,和pcd文件格式中的POINTS一样,height就为1,这样width*height也是点的个数。
所以这段代码不用说了,反正就是输出点的个数就行了。
后面有个预编译指令#if....#endif,貌似没有什么卵用。。。反正都不会执行,我不知道为什么,原代码作者是这么写的代码。。。
后面的代码就很明显了
pcl::visualization::CloudViewer view("test");
创建了一个用于显示点云的CloudViewer类型的对象,其实就是上图中的黑窗口,用来3维显示点云数据的,
viewer.showCloud(cloud); // 这里就是显示的代码
后面有个循环,现在还不太清楚这个循环的意义,wasStopped()是貌似用于注销窗口?
PCL学习笔记1的更多相关文章
- PCL学习笔记(一)
由于项目需要,开始学习一下HP公司的PCL打印语言,发现这方面的中文资料非常少,我做下记录也为后人提供便利. 关于PCL的介绍可以参考wiki百科 http://zh.wikipedia.org/zh ...
- pcl学习笔记(二):点云类型
不同的点云类型 前面所说的,pcl::PointCloud包含一个域,它作为点的容器,这个域是PointT类型的,这个域是PointT类型的是pcl::PointCloud类的模板参数,定义了点云的存 ...
- PCL学习笔记二:Registration (ICP算法)
原文:http://blog.csdn.net/u010696366/article/details/8941938 PCL Registration API Registration:不断调整,把不 ...
- Learning ROS for Robotics Programming Second Edition学习笔记(七) indigo PCL xtion pro live
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS forRobotics Pro ...
- OpenCV入门学习笔记
OpenCV入门学习笔记 参照OpenCV中文论坛相关文档(http://www.opencv.org.cn/) 一.简介 OpenCV(Open Source Computer Vision),开源 ...
- Learning ROS forRobotics Programming Second Edition学习笔记(八)indigo rviz gazebo
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS forRobotics Pro ...
- Xamarin 学习笔记 - Page(页面)
本文翻译自CodeProject文章:https://www.codeproject.com/Articles/1226447/Xamarin-Notes-Xamarin-Forms-Pages 转载 ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
随机推荐
- python实战学习之numpy学习
numpy基础要点 1.生成数组 np.array([]) 2.变量的类型 numpy.ndarray 3.数据的类型 int8,float64,float32,bool等 4.数据的类型转换 x.a ...
- shell脚本--cut命令
bash&shell系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html 1.1 选项说明 cut命令将行按指定的分隔符分割成多列,它的 ...
- Perl数组和hash相关函数
Perl数组和hash相关函数 内置的数组函数有: each, keys, pop, push, shift, splice, unshift, values 内置的hash函数有: delete, ...
- “多个单核CPU”与“单个多核CPU”哪种方式性能较强?
多个单核CPU: 成本更高,因为每个CPU都需要一定的线路电路支持,这样对主板上布局布线极为不便.并且当运行多线程任务时,多线程间通信协同合作也是一个问题.依赖总线的传输,速度较慢,且每一个线程因为运 ...
- Python系列:二、数据类型--技术流ken
标准数据类型 Python3 中有六个标准的数据类型: Number(数字) String(字符串) List(列表) Tuple(元组) Set(集合) Dictionary(字典) Python3 ...
- Logback中如何自定义灵活的日志过滤规则
当我们需要对日志的打印要做一些范围的控制的时候,通常都是通过为各个Appender设置不同的Filter配置来实现.在Logback中自带了两个过滤器实现:ch.qos.logback.classic ...
- Ubuntu 18.1远程登录服务器--ssh的安装
默认的Ubuntu 18.1桌面版没有安装ssh远程登录服务: 打开"终端窗口",输入"sudo apt-get update"-->回车-->&q ...
- Java学习笔记之——内部类
内部类 形式:把一个类定义在一个类的内部. 分为:成员内部类和匿名内部类重点掌握 a) 成员内部类 b) 静态成员内部类 c) 匿名内部类 d) 局部内部类 (1)成员内部类: Java的语言是面向对 ...
- blfs(systemv版本与systemd版本均适用)学习笔记-从主机挂载lfs的方法
我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! 运行以下命令,挂载并进入lfs分区即可 su export LFS=/mnt/lfs mount -v -t ext4 /dev ...
- 包含min函数的栈 ,二叉树的镜像
包含min函数的栈 问题 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). 代码 # -*- coding:utf-8 -*- class Sol ...