KSJXS SDK · 点云工具与坐标变换

版本 1.0 · 更新于 2026-10-21 · 阅读 0

点云 / 图像落盘(PCD、BMP)、坐标系变换与 X 方向重采样等辅助函数。

本组为头文件 @defgroup Base 中的辅助(Helper)与坐标处理函数,多为纯计算/落盘函数,不需要设备句柄。

除落盘函数外,其余函数要求输出内存由调用方提前分配,长度见各函数说明。

KSJXS_HelperSaveToPCD

int KSJXS_HelperSaveToPCD(int nWidth, int nHeight, float* pfX, float* pfY, float* pfZ, const char* pszFileName)

将 3D 点云数据保存为 PCD 数据文件。

参数 方向 说明
nWidth in 3D 数据帧宽度
nHeight in 3D 数据帧高度(轮廓数目)
pfX in X 方向数据地址指针
pfY in Y 方向数据地址指针
pfZ in Z 方向数据地址指针
pszFileName in PCD 文件路径

返回:成功返回 KSJXS_RET_SUCCESS;失败返回错误码

KSJXS_HelperSaveToPCDEx

int KSJXS_HelperSaveToPCDEx(int nWidth, int nHeight, float* pfX, float* pfY, float* pfZ, unsigned char* R, unsigned char* G, unsigned char* B, const char* pszFileName)

将 3D 点云保存为 PCD,同时把颜色数据加到点云中。

参数 方向 说明
nWidth in 3D 数据帧宽度
nHeight in 3D 数据帧高度(轮廓数目)
pfX / pfY / pfZ in X / Y / Z 方向数据地址指针
R / G / B in 红 / 绿 / 蓝分量数据地址指针
pszFileName in PCD 文件路径

返回:成功返回 KSJXS_RET_SUCCESS;失败返回错误码

KSJXS_HelperSaveToBmp

int KSJXS_HelperSaveToBmp(unsigned char* pData, int nWidth, int nHeight, int nBitCount, const char* pszFileName)

保存图像到位图(BMP)文件。

参数 方向 说明
pData in 图像数据
nWidth in 图像宽度(像素)
nHeight in 图像高度(像素)
nBitCount in 位深:8 灰度,24 为 24 位彩色,其他值不支持
pszFileName in 保存文件全路径(所在目录必须已存在)

返回:成功返回 KSJXS_RET_SUCCESS;失败返回错误码

KSJXS_Transform3DPoint

int KSJXS_Transform3DPoint(float* pfXIn, float* pfYIn, float* pfZIn, int nLength, float fMatrix[4][4], float* pfXOut, float* pfYOut, float* pfZOut)

通过 4×4 坐标转换矩阵转换点云的坐标系。

参数 方向 说明
pfXIn / pfYIn / pfZIn in 输入点云 X / Y / Z 数据指针
nLength in 输入点云数据长度(点数)
fMatrix in 4×4 坐标转换矩阵
pfXOut / pfYOut / pfZOut out 输出点云 X / Y / Z 数据指针

返回:成功返回 KSJXS_RET_SUCCESS

说明

  • 输出内存由调用者分配,长度与输入一致,应为 nLength。

KSJXS_TransAndXRotated3DPoint

int KSJXS_TransAndXRotated3DPoint(float* pfXIn, float* pfYIn, float* pfZIn, int nWidth, int nHeight, float fMatrix[4][4], float fAngleX, float* pfXOut, float* pfYOut, float* pfZOut)

先按 4×4 矩阵转换坐标系,再把点云绕 X 轴旋转。

参数 方向 说明
pfXIn / pfYIn / pfZIn in 输入点云 X / Y / Z 数据指针
nWidth in 数据宽度,表示一个轮廓多少点
nHeight in 数据高度,表示一共有多少个轮廓
fMatrix in 4×4 坐标转换矩阵
fAngleX in 一个轮廓绕 X 轴旋转的角度
pfXOut / pfYOut / pfZOut out 输出点云 X / Y / Z 数据指针

返回:成功返回 KSJXS_RET_SUCCESS

说明

  • 输出内存由调用者分配,长度应为 nWidth * nHeight。
  • ⚠️ fMatrix 中 Y 坐标不要参与转换(fMatrix[1] = {0,1,0,0}),否则结果点云可能异常。

KSJXS_Resample3DPoint

int KSJXS_Resample3DPoint(float* pfXIn, float* pfZIn, unsigned char* pIIn, int nWidth, int nHeight, float fXRes, float fXStart, int nReWidth, float* pfZOut, unsigned char* pIOut)

对点云的深度与亮度数据做 X 方向自定义重采样。

参数 方向 说明
pfXIn in 输入点云 X 方向数据指针
pfZIn in 输入点云 Z 方向数据指针
pIIn in 输入亮度数据指针
nWidth in 数据宽度,表示一个轮廓多少点
nHeight in 数据高度,表示一共有多少个轮廓
fXRes in 重采样的 X 精度
fXStart in 重采样起始的 X 位置
nReWidth in 重采样后一个轮廓的长度
pfZOut out 输出 Z 方向数据指针
pIOut out 输出亮度数据指针

返回:成功返回 KSJXS_RET_SUCCESS

说明

  • 输出内存由调用者分配,长度应为 nReWidth * nHeight。