std::vector<float> read_lidar_data(const std::string lidar_data_path) { std::ifstream lidar_data_file(lidar_data_path, std::ifstream::in | std::ifstream::binary); lidar_data_file.seekg(0, std::ios::end); const size_t num_elements = lidar_data_file.tellg() / sizeof(float); lidar_data_file.seekg(0, std::ios::beg); std::vector<float> lidar_data_buffer(num_elements); lidar_data_file.read(reinterpret_cast<char*>(&lidar_data_buffer[0]), num_elements*sizeof(float)); return lidar_data_buffer; }
时间: 2024-01-24 19:19:11 浏览: 146
LIDAR数据读取
这是一个读取二进制激光雷达数据的函数,其参数是激光雷达数据的路径,返回一个包含激光雷达数据的 float 类型的向量。
具体实现过程如下:
1. 打开二进制文件,以只读和二进制模式打开,使用 ifstream 类。
2. 定位到文件结尾,获取文件大小,单位为字节。
3. 计算元素个数,每个元素占用 sizeof(float) 个字节。
4. 定位到文件开头。
5. 创建一个大小为元素个数的 float 向量,作为缓冲区。
6. 读取缓冲区大小个字节到缓冲区中。
7. 返回缓冲区。
阅读全文