数据类型转换

This commit is contained in:
YangSn 2026-07-31 10:47:28 +08:00
parent 517889ff90
commit 47fef439e3
4 changed files with 659 additions and 504 deletions

View File

@ -63,23 +63,28 @@ public:
// 转换统一格式数据为std::vector<std::vector<SVzNL3DPosition>>格式 // 转换统一格式数据为std::vector<std::vector<SVzNL3DPosition>>格式
// validPointCount: 可选输出参数返回有效点个数xyz全非0的点 // validPointCount: 可选输出参数返回有效点个数xyz全非0的点
int ConvertToSVzNL3DPosition(const std::vector<std::pair<EVzResultDataType, SVzLaserLineData>>& unifiedData, int ConvertToSVzNL3DPosition(const std::vector<std::pair<EVzResultDataType, SVzLaserLineData>>& unifiedData,
std::vector<std::vector<SVzNL3DPosition>>& scanLines, std::vector<std::vector<SVzNL3DPosition>>& scanLines,
size_t* validPointCount = nullptr); size_t* validPointCount = nullptr);
// 从文件加载Poly折线数据带颜色 // 转换统一格式数据为std::vector<std::vector<SVzNLPositionD>>格式
// polyLines: 每条折线的点坐标列表polyLines[i] 是第i条折线的所有点含RGB颜色 int ConvertToSVzNLPositionD(const std::vector<std::pair<EVzResultDataType, SVzLaserLineData>>& unifiedData,
int LoadPolySegments(const std::string& fileName, std::vector<std::vector<SVzNLPositionD>>& scanLines);
std::vector<std::vector<SVzNLPointXYZRGBA>>& polyLines);
// 从文件加载Poly折线数据带颜色
// polyLines: 每条折线的点坐标列表polyLines[i] 是第i条折线的所有点含RGB颜色
int LoadPolySegments(const std::string& fileName,
std::vector<std::vector<SVzNLPointXYZRGBA>>& polyLines);
// 获取最后的错误信息 // 获取最后的错误信息
std::string GetLastError() const { return m_lastError; } std::string GetLastError() const { return m_lastError; }
private: private:
// 读取XYZ格式的激光数据 // 读取XYZ格式的激光数据
int _ParseLaserScanPoint(const std::string& data, SVzNL3DPosition& sData, SVzNL2DPosition& s2DData); int _ParseLaserScanPoint(const std::string& data, SVzNL3DPosition& sData, SVzNL2DPosition& s2DData);
int _ParseLaserScanPoint(const std::string& data, SVzNL3DPosition& sData, SVzNL2DPositionF& s2DData);
// 读取RGBD格式的激光数据 - 新增RGBD支持
// 读取RGBD格式的激光数据 - 新增RGBD支持
int _ParseLaserScanPoint(const std::string& data, SVzNLPointXYZRGBA& sData, SVzNL2DLRPoint& s2DData); int _ParseLaserScanPoint(const std::string& data, SVzNLPointXYZRGBA& sData, SVzNL2DLRPoint& s2DData);
// 获取激光数据类型 // 获取激光数据类型

File diff suppressed because it is too large Load Diff

View File

@ -1188,10 +1188,11 @@ int PointCloudImageUtils::GenerateDepthImage(
if (!lineData.p3DPoint || lineData.nPointCount <= 0) continue; if (!lineData.p3DPoint || lineData.nPointCount <= 0) continue;
// 根据数据类型处理点云数据 // 根据数据类型处理点云数据
if (dataType == keResultDataType_Position) { if (dataType == keResultDataType_Position ||
SVzNL3DPosition* positions = static_cast<SVzNL3DPosition*>(lineData.p3DPoint); dataType == keResultDataType_PositionF) {
for (int i = 0; i < lineData.nPointCount; i++) { SVzNL3DPosition* positions = static_cast<SVzNL3DPosition*>(lineData.p3DPoint);
const SVzNL3DPosition& point = positions[i]; for (int i = 0; i < lineData.nPointCount; i++) {
const SVzNL3DPosition& point = positions[i];
if (point.pt3D.z < 1e-4) continue; if (point.pt3D.z < 1e-4) continue;
if (point.pt3D.x < xMin) xMin = point.pt3D.x; if (point.pt3D.x < xMin) xMin = point.pt3D.x;
@ -1250,10 +1251,11 @@ int PointCloudImageUtils::GenerateDepthImage(
if (!lineData.p3DPoint || lineData.nPointCount <= 0) continue; if (!lineData.p3DPoint || lineData.nPointCount <= 0) continue;
if (dataType == keResultDataType_Position) { if (dataType == keResultDataType_Position ||
SVzNL3DPosition* positions = static_cast<SVzNL3DPosition*>(lineData.p3DPoint); dataType == keResultDataType_PositionF) {
for (int i = 0; i < lineData.nPointCount; i++) { SVzNL3DPosition* positions = static_cast<SVzNL3DPosition*>(lineData.p3DPoint);
const SVzNL3DPosition& point = positions[i]; for (int i = 0; i < lineData.nPointCount; i++) {
const SVzNL3DPosition& point = positions[i];
if (point.pt3D.z < 1e-4) continue; if (point.pt3D.z < 1e-4) continue;
// 计算图像坐标 // 计算图像坐标

View File

@ -9,13 +9,17 @@ CloudView3D.file = CloudView3D/CloudView3D.pro
CloudView.file = CloudView/CloudView.pro CloudView.file = CloudView/CloudView.pro
# 添加子项目 # 添加子项目
SUBDIRS += \ SUBDIRS += \
VrCommon \ VrCommon \
VrUtils \ VrUtils
CloudUtils \
DataUtils !equals(TARGET_APP, "ParkingSpaceGuideView") {
SUBDIRS += \
CloudUtils \
DataUtils
}
win32-msvc { win32-msvc:!equals(TARGET_APP, "ParkingSpaceGuideView") {
SUBDIRS += \ SUBDIRS += \
CloudView3D \ CloudView3D \
CloudView CloudView