读取.txt的点云数据,文件中含有“,”剔除。
c++程序及解析:
void CreateFromTxt(const std::string& file_path,pcl::PointCloud<pcl::PointXYZ>::Ptr cloud)
{
std::ifstream file(file_path.c_str());//打开文件
std::string line;//定义行
pcl::PointXYZ point;
while (getline(file, line)) //按行读取文件
{
string::iterator it;
for (it = line.begin(); it < line.end(); it++)
{
if (*it == ',')//判断是否有,
{
line.erase(it);//删除,
line.insert(it, ' ');//插入空格
it--;
}
}
std::stringstream ss(line);//点云赋值
ss >> point.x;
ss >> point.y;
ss >> point.z;
cloud->push_back(point);
}
file.close();
}
int main(int argc, char *argv[])
{
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_in(new pcl::PointCloud<pcl::PointXYZ>);
CreateFromTxt(argv[1],cloud_in);//从终端给地址,也可自己写地址
cout<<cloud_in->points.size()<<endl;
}
点云数据形如下图,
也可如下图
文件类型.txt文件
cmake文件(根据使用情况进行改写):
cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
project(test)
find_package(PCL REQUIRED)
include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})
add_executable (test test.cpp)
target_link_libraries (test ${PCL_LIBRARIES})
使用库:PCL