feat:实现两种体素滤波
parent
e02d1219f4
commit
80c17b89f8
|
@ -19,6 +19,25 @@ public class PclPointCloudXYZ : IDisposable {
|
||||||
[DllImport("./pcl/libpclwrapper.dylib")] private static extern int save_pcd_xyz(string path,IntPtr ptr);
|
[DllImport("./pcl/libpclwrapper.dylib")] private static extern int save_pcd_xyz(string path,IntPtr ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public class PclPointCloudXYZI : IDisposable {
|
||||||
|
private IntPtr handle;
|
||||||
|
|
||||||
|
public PclPointCloudXYZI() => handle = create_pointcloud_xyzi();
|
||||||
|
// 构造函数用于内部封装 handle 对象
|
||||||
|
public PclPointCloudXYZI(IntPtr handle) => this.handle = handle;
|
||||||
|
public void Dispose() { delete_pointcloud(handle); handle = IntPtr.Zero; }
|
||||||
|
|
||||||
|
public bool Load(string path) => load_pcd_xyzi( path,handle);
|
||||||
|
public int Save(string path) => save_pcd_xyzi(path,handle);
|
||||||
|
public IntPtr Handle => handle;
|
||||||
|
|
||||||
|
[DllImport("./pcl/libpclwrapper.dylib")] private static extern IntPtr create_pointcloud_xyzi();
|
||||||
|
[DllImport("./pcl/libpclwrapper.dylib")] private static extern void delete_pointcloud(IntPtr ptr);
|
||||||
|
[DllImport("./pcl/libpclwrapper.dylib")] private static extern bool load_pcd_xyzi(string path,IntPtr ptr);
|
||||||
|
[DllImport("./pcl/libpclwrapper.dylib")] private static extern int save_pcd_xyzi(string path,IntPtr ptr);
|
||||||
|
}
|
||||||
|
|
||||||
public class PclVoxelGridXYZ : IDisposable {
|
public class PclVoxelGridXYZ : IDisposable {
|
||||||
private IntPtr handle;
|
private IntPtr handle;
|
||||||
|
|
||||||
|
@ -36,4 +55,24 @@ public class PclVoxelGridXYZ : IDisposable {
|
||||||
[DllImport("./pcl/libpclwrapper.dylib")] private static extern IntPtr apply_voxel_filter_xyz(IntPtr filterPtr);
|
[DllImport("./pcl/libpclwrapper.dylib")] private static extern IntPtr apply_voxel_filter_xyz(IntPtr filterPtr);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public class PclVoxelGridXYZI : IDisposable {
|
||||||
|
private IntPtr handle;
|
||||||
|
|
||||||
|
public PclVoxelGridXYZI() => handle = create_voxel_filter_xyzi();
|
||||||
|
public void Dispose() { delete_voxel_filter(handle); handle = IntPtr.Zero; }
|
||||||
|
|
||||||
|
public void SetLeafSize(float x, float y, float z) => set_voxel_leaf_size(handle, x, y, z);
|
||||||
|
public void SetInputCloud(PclPointCloudXYZI cloud) => set_voxel_input_cloud(handle, cloud.Handle);
|
||||||
|
public PclPointCloudXYZI Filter() => new PclPointCloudXYZI(apply_voxel_filter_xyzi(handle));
|
||||||
|
|
||||||
|
[DllImport("./pcl/libpclwrapper.dylib")] private static extern IntPtr create_voxel_filter_xyzi();
|
||||||
|
[DllImport("./pcl/libpclwrapper.dylib")] private static extern void delete_voxel_filter(IntPtr ptr);
|
||||||
|
[DllImport("./pcl/libpclwrapper.dylib")] private static extern void set_voxel_leaf_size(IntPtr ptr, float x, float y, float z);
|
||||||
|
[DllImport("./pcl/libpclwrapper.dylib")] private static extern void set_voxel_input_cloud(IntPtr filterPtr, IntPtr cloudPtr);
|
||||||
|
[DllImport("./pcl/libpclwrapper.dylib")] private static extern IntPtr apply_voxel_filter_xyzi(IntPtr filterPtr);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue