我想在類型的點雲數據集分配單個RGB值,所有的點:點雲庫 - 如何將一個RGB值分配給整個點雲?
pcl::PointCloud<pcl::PointXYZRGB>
我猜你可以通過點迭代並改變每個價值?使用這樣的事情:
uint32_t rgb = (static_cast<uint32_t>(r) << 16 |
static_cast<uint32_t>(g) << 8 | static_cast<uint32_t>(b));
point.rgb = *reinterpret_cast<float*>(&rgb);
但是,考慮到我想給所有點相同的值是否有更好的方法?
RGB值需要與每個點或至少點的集合關聯,因此多個點雲可以合併到一個輸出中;每個都有自己獨特的顏色。
由於有多個點雲我用我無法設置顏色通過PCLVisualizer:
pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZ>
我有一個想法是隻作與點雲高水平的關聯關係:
std::tie(rgb, pointcloud) = std::make_tuple(
uint32_t, pcl::PointCloud<pcl::PointXYZ>);
那麼也許我可以多次使用PointCloudColorHandlerCustom
在同一個PCLVisualizer實例上顯示不同的彩色點雲?不知道這是否可能。
任何幫助非常感謝!
所以,我可能會更好過與存儲的RGB值旁邊的點雲,而不是迭代堅持?之後我可以使用PCLVisualizer中的功能。就像你說的那樣,這似乎不值得付出努力。 – macourtney7
你的方法是一種可能性。或者,您可以有一個巨大的點雲,並使用像pcl :: PointXYZL之類的東西,其中L代表Label或pcl :: PointXYZI和Intensity。然後你可以使用PointCloudColorHandlerLabelField或PointCloudColorHandlerGenericField。但是,然後你並不真正選擇可視化中的顏色值。 –
然而,即使在這種情況下,如果你看看PCL的代碼,他們會使用很多循環。所以你並沒有擺脫這種情況。 –