1.pcd文件——rabbit.pcd

链接:https://pan.baidu.com/s/1v6mjPjwd7fIqUSjlIGTIGQ
提取码:zspx

新建项目pcl

rabbit.pcd 和pcl.cpp在同一目录下

2.读取文件

(1)显示数据

#include<iostream>
#include<pcl/io/pcd_io.h>
#include<pcl/point_types.h> int main(int argc, char** argv) {
  //创建了一个名为cloud的指针,储存XYZ类型的点云数据
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>); //
//*打开点云文件
if (pcl::io::loadPCDFile<pcl::PointXYZ>("rabbit.pcd", *cloud) == -) {
PCL_ERROR("Couldn't read file rabbit.pcd\n");
return(-);
}
std::cout << "Loaded:" << cloud->width*cloud->height<<"data points from test_pcd.pcd with the following fields:"<< std::endl;
for (size_t i = ; i < cloud->points.size(); ++i) {
std::cout << " " << cloud->points[i].x << " " << cloud->points[i].y << " " << cloud->points[i].z << " " << std::endl;
}
system("pause");
return ;
}

文件里的数据就一次显示出来了

说明:

  PointCloud是PCL中的一个基类,pcl::PointCloud<pcl::PointXYZ>::Ptr是一个Boost共享指针

  PointCloud中的数据域  

    width(int),如果是无组织,无结构的点云数据,表示点云的个数;如果是有结构的点云数据,表示点云数据集一行的点数。

    height(int),如果是无结构的点云数据,height=1;如果是有结构的点云数据,height表示点云总行数。

    points(std::vector)存储了数据类型为PointT的一个动态数组。

  PointXYZ 是最常见的一个点数据类型,它只包含三维X,Y,Z坐标信息

    X:points[i].x

  size_t 整型,保存一个整数,记录一个大小(size)

  points.size() 表示点云数据大小

(2)数据可视化

#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>("rabbit.pcd", *cloud) == -) {
PCL_ERROR("Couldn't read file rabbit.pcd\n");
return(-);
}
std::cout << cloud->points.size() << std::endl;
pcl::visualization::CloudViewer viewer("cloud viewer");
viewer.showCloud(cloud);
while (!viewer.wasStopped()) { }
system("pause");
return ;
}

运行结果

转一下滚轮

修改背景色

#include<iostream>
#include<pcl/io/pcd_io.h>
#include<pcl/point_types.h>
#include <pcl/visualization/cloud_viewer.h>
void viewerOneOff(pcl::visualization::PCLVisualizer& viewer) {
viewer.setBackgroundColor(1.0f, 0.5f, 1.0f);
} int main(int argc, char** argv) {
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>); //*打开点云文件
if (pcl::io::loadPCDFile<pcl::PointXYZ>("rabbit.pcd", *cloud) == -) {
PCL_ERROR("Couldn't read file rabbit.pcd\n");
return(-);
}
std::cout << cloud->points.size() << std::endl;
pcl::visualization::CloudViewer viewer("cloud viewer");
viewer.showCloud(cloud);
viewer.runOnVisualizationThreadOnce(viewerOneOff); system("pause");
return ;
}

输出文字

#include<iostream>
#include<pcl/io/pcd_io.h>
#include<pcl/point_types.h>
#include <pcl/visualization/cloud_viewer.h> int user_data;
void viewerOneOff(pcl::visualization::PCLVisualizer& viewer) {
viewer.setBackgroundColor(1.0f, 0.5f, 1.0f);
}
void
viewerPsycho(pcl::visualization::PCLVisualizer& viewer)
{
static unsigned count = ;
std::stringstream ss;
ss << "Once per viewer loop: " << count++;
viewer.removeShape("text", );
viewer.addText(ss.str(), , , "text", );//this is to set the coordination of text "Once per viewer loop:"
user_data++;
}
int main(int argc, char** argv) {
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>); //*打开点云文件
if (pcl::io::loadPCDFile<pcl::PointXYZ>("rabbit.pcd", *cloud) == -) {
PCL_ERROR("Couldn't read file rabbit.pcd\n");
return(-);
}
std::cout << cloud->points.size() << std::endl;
pcl::visualization::CloudViewer viewer("cloud viewer");
viewer.showCloud(cloud);
viewer.runOnVisualizationThreadOnce(viewerOneOff);
viewer.runOnVisualizationThread(viewerPsycho);
system("pause");
return ;
}

PCL读取PCD文件的数据的更多相关文章

  1. (一)读取PCD文件

    下面是一个简单的读取PCD文件并显示的代码: #include <iostream> #include <pcl/io/pcd_io.h> #include <pcl/p ...

  2. PCD文件格式详解及在PCL下读取PCD文件

    一.PCD简介 1.1 PCD版本 在点云库PCL 1.0发布之前,PCD文件格式就已经发展更新了许多版本.这些新旧不同的版本用PCD_Vx来编号(例如PCD_V5.PCD_V6和PCD_V7等),分 ...

  3. SpringMVC 实现POI读取Excle文件中数据导入数据库(上传)、导出数据库中数据到Excle文件中(下载)

    读取Excale表返回一个集合: package com.shiliu.game.utils; import java.io.File; import java.io.FileInputStream; ...

  4. java 读取Excel文件并数据持久化方法Demo

    import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util ...

  5. C++ 把数组数据存入 CSV 文件,以及读取 CSV 文件的数据

    1. CSV-百度百科 2. 代码 #pragma once //Microsoft Visual Studio 2015 Enterprise #include<iostream> #i ...

  6. NPOI读取excel文件导出数据, 而此时文件正在打开中抛异常怎么办

    项目中需要用到一些数值表格, 方便起见都是用excel来的. 而如果excel正打开中, 直接使用npoi制作的工具来导出数据的话, 在这一行将会异常: workbook = new XSSFWork ...

  7. 【java IO】使用Java输入输出流 读取txt文件内数据,进行拼接后写入到另一个文件中

    package com.sxd.test.util; import java.io.BufferedReader; import java.io.BufferedWriter; import java ...

  8. 通过ant-jmeter读取jtl文件拆分数据并insert DB

    前言:之前详解过通过jmeter生成的csv文件,解析csv存入DB,这个有弊端 第一:需独立创建一个job 第二:需按照一定规范输出 因此,放弃解析csv方式,直接解析自动化生成的原始jtl文件并集 ...

  9. pandas 读取excel文件对数据简单清洗并用matplotlib 将数据展示

    首先我们看下数据 接下来数据分析操作 import numpy as np import pandas as pd from matplotlib import pyplot as plt if __ ...

随机推荐

  1. KVM-virsh常用命令

    virsh list #在线VM virsh list --all #所有VM virsh start #开机 virsh shutdown #软关机 virsh destroy #强制关机 virs ...

  2. Python应用-完成简单邮件发送功能

    项目中有时候需要用脚本来自动发送邮件,而用Python来发送邮件十分的方便,代码如下: #!/usr/bin/python #coding:utf-8 import smtplib from emai ...

  3. 【转】.NET Core 事件总线,分布式事务解决方案:CAP

    [转].NET Core 事件总线,分布式事务解决方案:CAP 背景 相信前面几篇关于微服务的文章也介绍了那么多了,在构建微服务的过程中确实需要这么一个东西,即便不是在构建微服务,那么在构建分布式应用 ...

  4. web 介绍

    Web介绍: w3c:万维网联盟组织,用来制定web标准的机构(组织) web标准:制作网页遵循的规范 web准备规范的分类:结构标准.表现标准.行为标准. 结构:html.表示:css.行为:Jav ...

  5. linux命令之------Chown命令

    Chown命令 1) 作用:将指定文件的拥有者改为指定的用户或组. 2) -c:显示更改的部分的信息. 3)-f:忽略错误信息. 4)-h:修复符号链接. 5)-v:显示详细的处理信息. 6)-R:处 ...

  6. 深入浅出的Java网络通信

    已经发表个人公众号 代码展示 package two; import java.io.BufferedReader; import java.io.InputStreamReader; import ...

  7. tensorflow学习笔记(二)

    tensorflow中自带的mnist手写数字识别,运用最简单的单层神经网络,softmax激活函数,极客学院上说准确率有91%,我今天调整到了92%! import tensorflow as tf ...

  8. 第07组 Alpha冲刺(4/6)

    队名:摇光 队长:杨明哲 组长博客:求戳 作业博客:求再戳 队长:杨明哲 过去两天完成了哪些任务 文字/口头描述:摇光测评的相关功能. 展示GitHub当日代码/文档签入记录:(组内共用,已询问过助教 ...

  9. vue 创建监听,和销毁监听(addEventListener, removeEventListener)

    最近在做一个有关监听scroll的功能, 发现我添加监听之后一直不起作用: 1 2 mounted() {     window.addEventListener("scroll" ...

  10. LDD3源码分析之poll分析

    编译环境:Ubuntu 10.10 内核版本:2.6.32-38-generic-pae LDD3源码路径:examples/scull/pipe.c  examples/scull/main.c 本 ...