问题1:pcd可以用pcl_viewer等点云可视化工具查看,但无法用文本形式打开查看;
问题2:采集的pcd中存在大量nan点数据,在配准等操作时报错如下:
Assertion failed: point_representation_->isValid (point) && “Invalid (NaN, Inf) point coordinates given to nearestKSearch!”
前者可以通过简单的读写文件来解决,后者可以通过pcl库的removeNaNFromPointCloud函数一步解决
代码如下:
pcl::PointCloud<pcl::PointXYZ>::Ptr pointcloud_0(new pcl::PointCloud<pcl::PointXYZ>);
for (int loop_i = 1; loop_i <= pcd_num; loop_i++)
{
ostringstream oss;
oss << loop_i;
string str = oss.str();
string loop_i_name = "../../" + str + ".pcd";
if (pcl::io::loadPCDFile<pcl::PointXYZ>(loop_i_name, *pointcloud_0) == -1)
{
PCL_ERROR("Couldn't read file\n");
return(-1);
}
std::vector<int> indices;
pcl::removeNaNFromPointCloud(*pointcloud_0, *pointcloud_0, indices);
pcl::io::savePCDFile(loop_i_name, *pointcloud_0);
}