本项目开发了一套基于PCL 1.8.1版本的动态链接库(DLL),集成了点云数据的高效读取、复杂处理与高质量重建功能,为开发者提供便捷灵活的三维空间数据操作接口。
以下是DLL函数接口的描述:
```cpp
// 初始化默认参数
extern C int __stdcall ZSY3DViewerInit();
// 读取历史数据到cloud
extern C int __stdcall ZSY3DReadHistoryData(char *file_dir);
// 读取txt数据到cloud
extern C int __stdcall ZSY3DReadTxtData(char *file_dir);
// 读取单个点数据到cloud
extern C int __stdcall ZSY3DReadSingleData(float x, float y, float z);
// 读取所有点数据到cloud
extern C int __stdcall ZSY3DReadNowData(float *x, float *y, float *z, int count);
// vtk读取txt文件并显示
extern C int __stdcall ZSY3DReadFile_TXT(char *file_dir);
// vtk读取obj文件并显示
extern C int __stdcall ZSY3DReadFile_OBJ(char *file_dir);
// vtk读取vtk文件并显示
extern C int __stdcall ZSY3DReadFile_VTK(char *file_dir);
// vtk读取ply文件并显示
extern C int __stdcall ZSY3DReadFile_PLY(char *file_dir);
// cloud下采样处理
extern C int __stdcall ZSY3DDownSampling(float leaf_size);
// cloud均匀采样处理
extern C int __stdcall ZSY3DBalanceSampling(float radiusSearch = 0.01f);
// cloud增采样处理
extern C int __stdcall ZSY3DIncreaseSampling(float radius = 0.03f, float StepSize = 0.02f);
// cloud直通滤波采样处理
extern C int __stdcall ZSY3DStraightSampling(char *fieldName = z, float limits_min = 0.0f, float limits_max = 0.1f, bool limitsNegative = true);
// cloud统计滤波采样处理
extern C int __stdcall ZSY3DStatisticsSampling(float meanK = 50.0f,float stddevMulThresh = 1.0f);
// cloud半径滤波采样处理
extern C int __stdcall ZSY3DRadiusSampling(float radiusSearch = 0.8f, float minNeighborsInRadius = 2.0f);
// cloud数据进行渲染,并显示
extern C int __stdcall ZSY3DShowPointCloud();
// cloud数据进行VTK三维重建(三角面绘制),并显示
extern C int __stdcall ZSY3DDelaunayBuild(bool depth_color);
// cloud数据进行VTK三维重建(曲面体绘制),并显示
extern C int __stdcall ZSY3DSurfaceBuild();
// cloud数据进行PCL三维重建(贪婪三角),并显示
extern C int __stdcall ZSY3DPCLDelaunayBuild(float k_search = 4.0f, float radius = 1.5f, float mu = 2.5f);
// cloud数据进行PCL三维重建(possion),并显示
extern C int __stdcall ZSY3DPCLPossionBuild(float k_search = 4.0f, float degree = 2.0f, float PerNode = 3.0f);
// cloud数据进行渲染,并显示,vtk进行坐标拾取
extern C int __stdcall ZSY3DPointPicker();
// vtk获取拾取坐标
extern C int __stdcall ZSY3DGetPickerPoint(float *point);
// vtk保存3D图文件为ply
extern C int __stdcall ZSY3DSaveFileOfPLY(char *file_dir);
// vtk保存3D图文件为obj
extern C int __stdcall ZSY3DSaveFileOfOBJ(char *file_dir);
// pcl保存点云文件为pcd
extern C int __stdcall ZSY3DSaveFileOfPCD(char *file_dir);
// 将点云数据同步到传入的数组中
extern C int __stdcall ZSY3DSynchronizeData(float* x, float* y, float* z, int* count);
// 判断窗口是打开还是关闭
extern C int __stdcall ZSY3DGetWindowState(float *states);
// 刷新cloud缓存数据
extern C int __stdcall ZSY3DFlushCacheData();
// 返回cloud数据点总数
extern C int __stdcall ZSY3DGetPointCount();
```