68 lines
2.5 KiB
C
68 lines
2.5 KiB
C
|
|
#ifndef LASER_DATA_LOADER_H
|
||
|
|
#define LASER_DATA_LOADER_H
|
||
|
|
|
||
|
|
#include <vector>
|
||
|
|
#include <string>
|
||
|
|
#include "VZNL_Types.h"
|
||
|
|
#include "VrError.h"
|
||
|
|
|
||
|
|
// 激光数据加载器类
|
||
|
|
class LaserDataLoader
|
||
|
|
{
|
||
|
|
public:
|
||
|
|
LaserDataLoader();
|
||
|
|
~LaserDataLoader();
|
||
|
|
|
||
|
|
// 从文件加载激光扫描数据 - 修改为对象向量
|
||
|
|
int LoadLaserScanData(const std::string& fileName,
|
||
|
|
std::vector<SVzNL3DLaserLine>& laserLines,
|
||
|
|
int& lineNum,
|
||
|
|
float& scanSpeed,
|
||
|
|
int& maxTimeStamp,
|
||
|
|
int& clockPerSecond);
|
||
|
|
|
||
|
|
// 保存激光扫描数据到文件 - 修改为对象向量
|
||
|
|
int SaveLaserScanData(const std::string& fileName,
|
||
|
|
const std::vector<SVzNL3DLaserLine>& laserLines,
|
||
|
|
int lineNum,
|
||
|
|
float scanSpeed,
|
||
|
|
int maxTimeStamp,
|
||
|
|
int clockPerSecond);
|
||
|
|
|
||
|
|
// 释放加载的数据内存 - 修改为对象向量
|
||
|
|
void FreeLaserScanData(std::vector<SVzNL3DLaserLine>& laserLines);
|
||
|
|
|
||
|
|
// 获取最后的错误信息
|
||
|
|
std::string GetLastError() const { return m_lastError; }
|
||
|
|
|
||
|
|
private:
|
||
|
|
// 读取XYZ格式的激光数据
|
||
|
|
SVzNL3DLaserLine* ReadLaserScanPointFromFile_XYZ(const char* fileName,
|
||
|
|
int* scanLineNum,
|
||
|
|
float* scanV,
|
||
|
|
int* dataCalib,
|
||
|
|
int* scanMaxStamp,
|
||
|
|
int* canClockUnit);
|
||
|
|
|
||
|
|
// 保存激光数据到文件(移除零点)
|
||
|
|
void SaveScanDataFile_RemoveZeros(const char* fileName,
|
||
|
|
SVzNL3DLaserLine* scanData,
|
||
|
|
int lineNum,
|
||
|
|
float lineV,
|
||
|
|
int maxTimeStamp,
|
||
|
|
int clockPerSecond);
|
||
|
|
|
||
|
|
// 解析文件头信息
|
||
|
|
int ParseFileHeader(const std::string& line, int& lineNum);
|
||
|
|
|
||
|
|
// 解析扫描线信息
|
||
|
|
int ParseScanLine(const std::string& line, int& lineIndex, unsigned int& timeStamp, int& pointNum);
|
||
|
|
|
||
|
|
// 解析3D点信息
|
||
|
|
int Parse3DPoint(const std::string& line, float& x, float& y, float& z);
|
||
|
|
|
||
|
|
std::string m_lastError;
|
||
|
|
static const int VZ_LASER_LINE_PT_MAX_NUM = 4096;
|
||
|
|
};
|
||
|
|
|
||
|
|
#endif // LASER_DATA_LOADER_H
|