KSJXS SDK · 点云工具与坐标变换
点云 / 图像落盘(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。
这份文档对您有帮助吗?
发现错误、表述不清或缺少内容?请告诉我们,我们会尽快补充。
您可以通过以下方式反馈: 发送邮件至 service@catchbest.com