semantic KITTI数据集,还拥有 labels数据。其中 labels数据格式是 unint32类型,其中的 2个高字节是 instance Id,2个低字节是 semantic Id,也就是说这个数据集支持语义分割,也支持全景分割。
写一个测试算子如下:
static pcl::shared_ptr<PointCloud<PointXYZL>> read_xyz(const string& modelFile, const string& labelFile)
{
const int modelLineCnt = 4;
auto modelData = file_read_bin(modelFile);
auto labelData = file_read_bin(labelFile);
auto cld = pcl::make_shared<PointCloud<PointXYZL>>();
auto& pts = cld->points;
pts.resize(modelData.size() /(sizeof(float)*modelLineCnt));
float* pModelData = (float*)modelData.data();
unsigned int* pLabelData = (unsigned int*)labelData.data();
for (int i = 0; i < pts.size(); ++i)
{
auto& pt = pts[i];
pt.x = pModelData[0];
pt.y = pModelData[1];
pt.z = pModelData[2];
auto allId = pLabelData[i];
pt.label = allId;
pModelData += modelLineCnt;
}
return cld;
}
其中 file_read_bin是一个工具函数,签名是:
vector<unsigned char> file_read_bin(const string& fileName)
功能就是将 文件读取到 vector<unsigned char>.
测试算子如下:
这样就实现了全景分割的数据集显示。