c++ - CARLA RGB相机传感器的输出格式是什么

标签 c++ carla

我看到很多 RGB 相机的 python 示例。但找不到任何 RGB 相机输出的 C++ 示例。 CARLA RGB Camera Sensor的回调数据中的数据是如何存储的?可以通过读取代码来获取数据输出 - 但我认为有人可能已经使用升压 View 之类的东西解码了相机输出。

最佳答案

免责声明:此答案在 0.9.8 中有效,请记住 CARLA 的 C++ API 仍在开发中,并且经常更改,如有疑问,请查看源代码或其 C++ Reference .

C++ API 传递 boost::shared_ptr<carla::sensor::SensorData>对于传感器回调,这是所有传感器数据类型(图像、点云等)的基类。与 Python 不同,C++ API 不会自动向下转换为特定类型,这是您必须执行的额外步骤。对于相机,您应该向下转换为 carla::sensor::data::Image (别名 ImageTmpl<Color> )

camera->Listen([](auto data) {
    auto image = boost::dynamic_pointer_cast<carla::sensor::data::Image>(data);
    assert(image != nullptr);
    parseImage(image);
});

该图像可以用作像素数组

for (auto& pixel : *image)
{
    std::cout << pixel.r << ", " << pixel.g << ", " << pixel.b << "\n";
}

或者,如果您希望直接访问缓冲区,请使用 image->data() ,它在内存中的布局是BGRA。

carla::image::ImageView 中还提供了到 Boost GIL View 的转换,以及一些方便的颜色转换器,以防您想要创建颜色转换 View ,例如对语义分割图像进行着色。这对于以更人性化的颜色显示图像非常有用,而无需修改原始图像或制作拷贝。

using namespace carla::image;

// Boost GIL image view.
auto view = ImageView::MakeView(*image);

// View semantic segmentation as CityScapes color palette.
auto colorized = ImageView::MakeColorConvertedView(view, ColorConverter::CityScapesPalette{});

最后,可以使用 ImageIO 将该 View 保存到磁盘。 ,但是如果使用它,您需要链接 boost_filesystem、libpng、libjpeg 和 libtiff。因此,除非您确实需要,否则我会避免包含此内容。

ImageIO::WriteView("image.png", colorized);

关于c++ - CARLA RGB相机传感器的输出格式是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61134440/

相关文章:

python - pygame应该通过pip安装在哪里?/usr/lib还是~/.local/lib?

c++ - 此场景需要使用 map Town01

c++ - 计算距对象起点的距离时,_ATL_PACKING 常量有什么用?

c++ - 为 GCC 复制 clang 的 __builtin_assume

c++ - 从 C++ std::vector<float> 转换为 Rust Vec<f32> 的最佳方法是什么?

c++ - 搜索链表,不同的数据类型

c++ - (C++) noob - 我的代码有什么问题?

c++ - Carla Python/C++扩展-导入错误: undefined symbol Ipopt