gpt4 book ai didi

c++ - 在CImg中加载点云

转载 作者:行者123 更新时间:2023-12-02 10:30:44 26 4
gpt4 key购买 nike

我正在尝试从点云创建3D CImg对象以使用CImg的编辑功能。

我有一个以ascii格式保存的点云

pcl::io::savePCDFileASCII("/path/data.txt", *cloud);

然后我初始化一个3d CImg对象并尝试加载asci文件
CImg<float> image(cloud->width, cloud->height, 5);
image.load_ascii("/path/data.txt");

这是错误
[CImg] *** CImgIOException *** [instance(512,432,5,1,0x55555668f800,non-shared)] CImg<float>::load_ascii(): Invalid ascii header in file '/path/data.txt', image dimensions are set to (0,1,1,1).
terminate called after throwing an instance of 'cimg_library::CImgIOException'
what(): [instance(512,432,5,1,0x55555668f800,non-shared)] CImg<float>::load_ascii(): Invalid ascii header in file '/path/data.txt', image dimensions are set to (0,1,1,1).

这是我生成的ascii文件
# .PCD v0.7 - Point Cloud Data file format
VERSION 0.7
FIELDS x y z rgb
SIZE 4 4 4 4
TYPE F F F U
COUNT 1 1 1 1
WIDTH 512
HEIGHT 432
VIEWPOINT 0 0 0 1 0 0 0
POINTS 221184
DATA ascii
-0.2196694 -0.1688118 0.55800003 4285428082
-0.21879199 -0.1688118 0.55800003 4285559668
...

我是c++和CImg的新手,所以不确定将点云加载到CImg的正确或最佳方法是什么。我在互联网上也找不到任何有用的信息,CImg github引起的混乱比它带来的帮助更大。

我正在使用Ubuntu 20,c++ 11,并且加载任何类型的2D图像都可以正常工作。

最佳答案

您的PCL文件与CImg期望的文件不匹配。它正在寻找以以下内容开头的文件:

WIDTH HEIGHT DEPTH NUMCHANNELS
float1
float2
float3
...

所以,我做了这个例子:
#include "CImg.h"
#include <iostream>

using namespace cimg_library;
using namespace std;

int main()
{
// Load image
CImg<float> image;
image.load_ascii("image.asc");
cout << image.width() << endl;
cout << image.height() << endl;

}

然后,我像这样制作了一个尺寸为4x8x3的虚拟 image.asc文件,它可以正常工作:
4 8 3 1
float1
float2
float3
...
float96

关于c++ - 在CImg中加载点云,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62346230/

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