PLY点云数据在PCL中读取与显示

今天开始着手处理PLY数据,由于之前没有接触过PCL,所以连最简单的数据读取与显示都搞了半天,现在将代码公布出来以供参考。

使用的环境是:vs2015+pcl1.8.1

#include "stdafx.h"
#include <iostream>
#include <string>
#include <pcl/point_types.h>
#include <pcl/io/ply_io.h>
#include <pcl/io/pcd_io.h>
#include <pcl/PCLPointCloud2.h>
#include <pcl/visualization/cloud_viewer.h>

using namespace pcl;
using namespace pcl::io;
using namespace std;

int main() {
  pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
  if (pcl::io::loadPLYFile<pcl::PointXYZ>("pointCloud.ply", *cloud) == -1) {       
      PCL_ERROR("Couldnot read file.\n");
      system("pause");
      return(-1);
  }
  
  pcl::visualization::CloudViewer viewer("Cloud Viewer");
  viewer.showCloud(cloud);
  system("pause");
  return(0);
}

值得注意的几点是:

1)cloud智能指针对象在定义的时候记得要初始化;一开始我没有初始化,结果程序报错:

Assertion failed: px!=0  file ..\boost\smart_ptr\shared_ptr.hpp, line 704.

2)pointCloud的格式有很多种,如PointXYZ, PointXYZRGB,...。这里我这使用的是PointXYZ,是因为使用的数据pointcloud.ply中只包含每个点的三维坐标,这里的格式需要根据自己的数据来确定。

pointcloud.ply数据格式如下:

ply
format ascii 1.0
element vertex 43200
property float x
property float y
property float z
end_header
-125 -95 232
-241 -109 456
-247 -169 462

......

......

3)数据显示的时候,一开始的界面是上面一条绿色,下面左边是黑色,右边是红色,我还以为数据出问题了,用鼠标缩放才发现这代表的是坐标轴。通过鼠标左右键与滑轮可以调节数据的缩放、旋转角度等。

    

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值