版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lxn9492878lbl/article/details/83543612
从txt文件读取数据保存在pcd中
首先写c++文件
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <vector>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/visualization/cloud_viewer.h>
using namespace std;
struct tagPOINT_3D
{
float x;
float y;
float z;
float I;
};
int main()
{
int number_Txt;
string line;
tagPOINT_3D TxtPoint;
vector<tagPOINT_3D> m_vTxtPoints;
ifstream input("txtwenjian.txt");
while(getline(input,line)){
tagPOINT_3D TxtPoint;
istringstream record(line);
record >> TxtPoint.x;
record >> TxtPoint.y;
record >> TxtPoint.z;
record >> TxtPoint.I;
m_vTxtPoints.push_back(TxtPoint);
}
number_Txt = m_vTxtPoints.size();
pcl::PointCloud<pcl::PointXYZ> cloud;
// Fill in the cloud data
cloud.width = number_Txt;
cloud.height = 1;
cloud.is_dense = false;
cloud.points.resize(cloud.width * cloud.height);
for (size_t i = 0; i < cloud.points.size(); ++i)
{
cloud.points[i].x =m_vTxtPoints[i].x;
cloud.points[i].y =m_vTxtPoints[i].y;
cloud.points[i].z = 0.0;
}
pcl::io::savePCDFileASCII("pcdwenjian.pcd", cloud);
std::cerr << "Saved " << cloud.points.size() << " data points to txt2pcd.pcd." << std::endl;
//pcl::visualization::CloudViewer viewer ("Cloud Viewer");
//viewer.showCloud (cloud);
//while (!viewer.wasStopped ())
//{
//}
system("pause");
return 0;
}
再写CMakeLists文件
cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
project(txt2pcd)
find_package(PCL 1.2 REQUIRED)
include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})
add_executable (txt2pcd txt2pcd.cpp)
target_link_libraries (txt2pcd ${PCL_LIBRARIES})