gpt4 book ai didi

c++ - 以 x y z r g b 格式读取 ascii 点云

转载 作者:行者123 更新时间:2023-11-28 04:30:38 31 4
gpt4 key购买 nike

我在 txt 文件中有一个点云,其中每一行都是以下形式:

x y z r g b

我应该如何将其读入 PCL 中的 XYZRGB 点云? PCL 中的 ascii 阅读器或 pcdreader 期望格式为 x y z rgb 形式,其中 rgb 是一个值,代表 r g b 个 channel 。

有没有什么方法可以读取我上面提到的格式的点云,而无需修改点云本身?

编辑:添加我当前的代码和点云中的一些行以响应评论

    pcl::ASCIIReader ptsReader;
ptsReader.setSepChars(" ");
ptsReader.read(m_pointCloudFilePath,*m_pointCloudRef);

如果m_pointCloudRef是类型:pcl::PointCloud<pcl::PointXYZRGB>::Ptr此代码不适用于运行时错误消息:Failed to find match for field 'rgb'. .如果 m_pointCloudRef,则相同的代码有效类型为 pcl::PointCloud<pcl::PointXYZ>::Ptr (这也意味着我正在处理一个 ASCII 文件,其中每一行都是 x y z )

以下是我使用的点云的前几行:

0.792 9.978 12.769 234 220 209
0.792 9.978 12.768 242 228 217
0.794 9.978 12.771 241 227 214
0.794 9.978 12.770 247 231 218
0.793 9.979 12.769 234 217 207
0.793 9.979 12.768 238 224 213
0.794 9.979 12.767 239 227 215
0.795 9.978 12.772 230 221 206
0.795 9.978 12.771 243 229 216
0.795 9.979 12.770 242 226 213
0.795 9.979 12.769 235 218 208
0.795 9.979 12.768 235 221 210
0.795 9.979 12.767 240 228 216
0.795 9.979 12.766 240 230 218
0.795 9.979 12.765 240 230 218
0.795 9.978 12.763 244 234 222

最佳答案

如果您不想更改云在磁盘上的保存方式并且只需要使用极少数云类型,您可以手动读取它们。

 bool loadAsciCloud(std::string filename, pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud)
{
std::cout << "Begin Loading Model" << std::endl;
FILE* f = fopen(filename.c_str(), "r");

if (NULL == f)
{
std::cout << "ERROR: failed to open file: " << filename << endl;
return false;
}

float x, y, z;
char r, g, b;

while (!feof(f))
{
int n_args = fscanf_s(f, "%f %f %f %c %c %c", &x, &y, &z, &r, &g, &b);
if (n_args != 6)
continue;

pcl::PointXYZRGB point;
point.x = x;
point.y = y;
point.z = z;
point.r = r;
point.g = g;
point.b = b;

cloud->push_back(p);
}

fclose(f);

std::cout << "Loaded cloud with " << cloud->size() << " points." << std::endl;

return cloud->size() > 0;
}

关于c++ - 以 x y z r g b 格式读取 ascii 点云,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53067067/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com