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,傻瓜无脑操作,新手友好哈哈哈

全部评论

相关推荐

05-19 19:57
蚌埠学院 Python
2237:Gpa70不算高,建议只写排名,个人技能不在多而在精,缩到8条以内。项目留一个含金量高的,减少间距弄到一页,硕士简历也就一页,本科不要写很多
实习,投递多份简历没人回...
点赞 评论 收藏
分享
不要停下啊:大二打开牛客,你有机会开卷了,卷起来,去找课程学习,在牛客上看看大家面试笔试都需要会什么,岗位有什么需求就去学什么,努力的人就一定会有收获,这句话从来都经得起考验,像我现在大三了啥也不会,被迫强行考研,炼狱难度开局,啥也不会,找工作没希望了,考研有丝丝机会
点赞 评论 收藏
分享
07-01 17:14
中北大学 Java
兄弟们是真是假
牛客46374834...:我在boss上投java岗从来没成功过
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务