bool get_cloud_xyzrgb(std::string path,pcl::PointCloud<pcl::PointXYZRGB>&cloud)
{
cloud.clear();//清空引用对象cloud里的所有元素
std::ifstream inf;//创建了一个名为inf的输入文件流对象
bool flag = false;
try
{
inf.open(path);
}
catch (const std::exception&)//std::exception是C++标准库中所有异常类的基类。因此,catch (const std::exception&)可以捕获大多数由标准库抛出的异常。
{
return false;
}
std::string sline;//定义字符串
std::vector<std::string>string_output;
std::string Delema = " ";
pcl::PointXYZRGB point_message;
while(getline(inf,sline))//从inf文件中逐行读取,并存储在sline中
{
int i=0;
split(sline,string_output,Delema);
if(string_output.size()!=6) cout<<"don't match"<<endl;
point_message.x=stold(string_output[i]);
point_message.y=stold(string_output[i+1]);
point_message.z=stold(string_output[i+2]);
point_message.r = static_cast<uint8_t>(std::stoi(string_output[i+3]));
point_message.g = static_cast<uint8_t>(std::stoi(string_output[i+4]));
point_message.b = static_cast<uint8_t>(std::stoi(string_output[i+5]));
string_output.clear();
cloud.push_back(point_message);
}
inf.close();
}
分割字符串之后加载点云
最新推荐文章于 2024-10-13 11:08:06 发布