PCL库导入点云模型以及常见问题分析

PCL程序运行后先加载所有的点云坐标,被刷屏了,等待时间较长。
我上传了免费的兔子点云模型,链接见https://download.csdn.net/download/Asabc12345/12488127
运行后先加载点云坐标
加载后的点云模型


#include <iostream> //标准输入输出流
#include <pcl/io/pcd_io.h> //PCL的PCD格式文件的输入输出头文件
#include <pcl/io/ply_io.h> //PCL的ply格式文件的输入输出头文件
#include <pcl/point_types.h> //PCL对各种格式的点的支持头文件
#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::loadPLYFile<pcl::PointXYZ>("C:\\Users\\fhlhc\\Desktop\\点云模型\\rabbit.ply", *cloud) == -1) //* 读入PCD格式的文件,如果文件不存在,返回-1
	{
		PCL_ERROR("Couldn't read file test_pcd.pcd \n"); //文件不存在时,返回错误,终止程序。
		return (-1);
	}
	std::cout << "Loaded "
		<< cloud->width * cloud->height
		<< " data points from test_file.pcd with the following fields: "
		<< std::endl;
	for (size_t i = 0; i < cloud->points.size(); ++i) //显示所有的点
	//for (size_t i = 0; i < cloud->size(); ++i) // 为了方便观察,只显示前5个点
		std::cout << "    " << cloud->points[i].x
		<< " " << cloud->points[i].y
		<< " " << cloud->points[i].z << std::endl;
	pcl::visualization::CloudViewer viewer("pcd viewer");
	viewer.showCloud(cloud);
	system("pause");
	return (0);
}

//#include<pcl/visualization/cloud_viewer.h>
//#include<iostream>//标准C++库中的输入输出类相关头文件。
//#include<pcl/io/io.h>
//#include<pcl/io/pcd_io.h>//pcd 读写类相关的头文件。
//#include<pcl/io/ply_io.h>
//#include<pcl/point_types.h> //PCL中支持的点类型头文件。
//int user_data;
//using std::cout;
//
//
//void viewerOneOff(pcl::visualization::PCLVisualizer& viewer) {
//    viewer.setBackgroundColor(1.0, 0.5, 1.0);   //设置背景颜色
//}
//
//int main() {
//    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
//
//    char strfilepath[256] = "E:\\intern\\rabbit.pcd";
//    if (-1 == pcl::io::loadPCDFile(strfilepath, *cloud)) {
//        cout << "error input!" << endl;
//        return -1;
//    }
//
//    cout << cloud->points.size() << endl;
//    pcl::visualization::CloudViewer viewer("Cloud Viewer");     //创建viewer对象
//
//    viewer.showCloud(cloud);
//    viewer.runOnVisualizationThreadOnce(viewerOneOff);
//    system("pause");
//    return 0;
//}
//

常见问题:
1.运行后不报错但是不显示,输出-1。
问题分析:点云模型格式或者文件有问题,换一个文件试试。
#include <pcl/io/pcd_io.h> //PCL的PCD格式文件的输入输出头文件
#include <pcl/io/ply_io.h> //PCL的ply格式文件的输入输出头文件
这两个头文件代表点云的格式,如果你是ply的格式,但是只加载了PCD的头文件,是运行不出来的,检查头文件少没少。
注意加载不同格式点云时,loadPCDFile这里也要改,导入ply格式的话就要把PCD改成loadPLYFile。
在这里插入图片描述

2.报错
parse error: couldn’t read the magic string
[pcl::PLYReader::read] problem parsing header!
[pcl::PLYReader::read] problem parsing header!
Couldn’t read ply file

错误分析:路径什么都没问题的话,我也没找到具体的原因,反正我后来换了点云模型重新加载就解决了

如果只是想简单的调用点云读取或者显示不做进一步研究的话,只需要用其他成熟的商业软件比如MeshLab,傻瓜无脑操作,新手友好哈哈哈meshlab的显示界面

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

滑了丝的螺丝钉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值