CARLA
 
载入中...
搜索中...
未找到
GBufferFloatSerializer.h
浏览该文件的文档.
1// Copyright (c) 2022 Computer Vision Center (CVC) at the Universitat Autonoma
2// de Barcelona (UAB).
3//
4// This work is licensed under the terms of the MIT license.
5// For a copy, see <https://opensource.org/licenses/MIT>.
6
7#pragma once
8
9#include "carla/Memory.h" // 包含智能指针和内存管理的定义
10#include "carla/sensor/RawData.h" // 包含原始传感器数据的定义
11
12#include <cstdint> // 用于定义固定宽度的整数类型
13#include <cstring> // 用于操作 C 风格字符串和内存复制
14
15namespace carla {
16namespace sensor {
17
18 class SensorData; // 前向声明,表示反序列化的结果类型
19
20namespace s11n {
21
22 /// Serializes image buffers generated by camera sensors.
24 public:
25
26#pragma pack(push, 1) // 指定结构体按 1 字节对齐,确保与传感器数据的二进制格式一致。
27 struct ImageHeader {
28 uint32_t width; // 图像宽度
29 uint32_t height; // 图像高度
30 float fov_angle; // 相机视场角
31 };
32#pragma pack(pop) // 恢复默认对齐方式
33
34 constexpr static auto header_offset = sizeof(ImageHeader); // 定义头部的偏移量,用于定位图像头部
35
36 static const ImageHeader &DeserializeHeader(const RawData &data) { // 使用 reinterpret_cast 将原始数据转换为 ImageHeader 的指针,并解引用
37 return *reinterpret_cast<const ImageHeader *>(data.begin());
38 }
39
40 template <typename Sensor> // 序列化传感器图像缓冲区
41 static Buffer Serialize(const Sensor &sensor, Buffer &&bitmap,
42 uint32_t ImageWidth, uint32_t ImageHeight, float FovAngle);
43
44 static SharedPtr<SensorData> Deserialize(RawData &&data); //反序列化传感器数据
45 };
46
47 template <typename Sensor> // 序列化图像数据并填充头部信息
48 inline Buffer GBufferFloatSerializer::Serialize(const Sensor &/*sensor*/, Buffer &&bitmap,
49 uint32_t ImageWidth, uint32_t ImageHeight, float FovAngle) {
50 DEBUG_ASSERT(bitmap.size() > sizeof(ImageHeader)); // 断言缓冲区大小足够容纳头部信息
51 ImageHeader header = { // 构造图像头部,包含图像的元数据信息
52 ImageWidth,
53 ImageHeight,
54 FovAngle
55 };
56 std::memcpy(bitmap.data(), reinterpret_cast<const void *>(&header), sizeof(header)); // 将头部信息复制到缓冲区的起始位置
57 return std::move(bitmap); // 返回更新后的缓冲区
58 }
59
60} // namespace s11n
61} // namespace sensor
62} // namespace carla
#define DEBUG_ASSERT(predicate)
Definition Debug.h:68
一块原始数据。 请注意,如果需要更多容量,则会分配一个新的内存块,并 删除旧的内存块。这意味着默认情况下,缓冲区只能增长。要释放内存,使用 clear 或 pop。
包装一个传感器生成的原始数据以及一些有用的元信息。
Definition RawData.h:20
auto begin() noexcept
指向传感器生成的数据的开始迭代器。
Definition RawData.h:52
Serializes image buffers generated by camera sensors.
static SharedPtr< SensorData > Deserialize(RawData &&data)
static const ImageHeader & DeserializeHeader(const RawData &data)
static Buffer Serialize(const Sensor &sensor, Buffer &&bitmap, uint32_t ImageWidth, uint32_t ImageHeight, float FovAngle)
CARLA模拟器的主命名空间。
Definition Carla.cpp:139
boost::shared_ptr< T > SharedPtr
使用这个SharedPtr(boost::shared_ptr)以保持与boost::python的兼容性, 但未来如果可能的话,我们希望能为std::shared_ptr制作一个Python适配器。
Definition Memory.h:19