未解决错误程序集锦

1. 读取点云txt文件,保存为pcd文件

#include <pcl/io/pcd_io.h>  //PCD读写类相关的头文件
#include <pcl/io/ply_io.h> 
#include<iostream>  

#include <pcl/point_types.h>
#include <pcl/visualization/cloud_viewer.h>

using namespace std;

int numofPoints(char* fname)
{
	int n = 0;
	int c = 0;
	FILE *fp;
	fp = fopen(fname, "r");
	do{
		c = fgetc(fp);
		if (c == '\n')
		{
			++n;
		}
	} while (c != EOF);
	fclose(fp);
	return n;
}
int main()
{
	int n = 0; //n用来计文件中点个数      
	FILE *fp_1;
	fp_1 = fopen("pointcloud.txt", "r");
		if (NULL == fp_1)//检查是否读取文件正确
	{
		printf("error");
	}
	n = numofPoints("cloudpoint.txt");//使用numofPoints函数计算文件中点个数  
	cout << "there are " << n << " points in the file..." << endl;
	//新建一个点云文件,然后将结构中获取的xyz值传递到点云指针cloud中。  
	pcl::PointCloud<pcl::PointXYZ> cloud;//这种定义方式无法作为指针显示出来,但是其他都可以用
	pcl::PointCloud<pcl::PointXYZ>::Ptr seecloud (new pcl::PointCloud<pcl::PointXYZ>);//但是这个没有成员width,height,所以下方显示时要进行一个转换
	cloud.width = n;
	cloud.height = 1;
	cloud.is_dense = false;  //不是稠密型的
	cloud.points.resize(cloud.width * cloud.height); //点云总数的大小
	//将点云读入并赋给新建点云指针的xyz      
	double x, y, z;
	int i = 0;
	while (6 == fscanf(fp_1, "%lf %lf %lf\n", &x, &y, &z))
	{
		//cout << x << " " << y << " " << z << endl;这句要不要都行,如果输出的话转换的速度会很慢,因为每个点都会读取出来
		cloud.points[i].x = x;
		cloud.points[i].y = y;
		cloud.points[i].z = z;
		cloud.points[i].r = r;
		cloud.points[i].g = g;
		cloud.points[i].b = b;
		++i;
	}
	fclose(fp_1);
	//*seecloud = cloud;//要转换一下,cloud不能直接作为指针显示,而是用seecloud这个Ptr
	
	////显示点云
	//pcl::visualization::CloudViewer viewer("Viewer");
	//viewer.showCloud(seecloud);
	//while (!viewer.wasStopped())
	//{
	//}

	//pcl::io::savePCDFileASCII("03.pcd", cloud);  //存储到PCD文件
	//std::cerr << "Saved " << cloud.points.size() << " data points to test_pcd.pcd." << std::endl;  //保存
	
	system("pause");
	return 0;
}

错误:生成解决方案没有问题,但是调试不行
在这里插入图片描述
百度原因说是读取文件的问题,错误提示也会跳到 fgetc()这个函数,但是不知道错在哪里,不知道咋改,先放着吧
在这里插入图片描述
百度了一下fgetc()的用法,感觉没啥问题啊

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章