基于C的Qt和PCL开发的点云显示与交互软件适合图形图像新人及研究生快速了解点云数据处理及编程开发工作支持功能包括 1、颜色渲染 2、法向量等属性计算 3、自动滤波 4、目标剪裁 5、几何量测 6、目标分割 7、点云配准 8、曲面构建 备注基于cmake编译支持跨平台linux和windows下均可运行。 本次服务不包括源码编译需要自行编译。 Qt5.12.0 PCL 1.11.0 VTK 8.2.0最近在折腾点云处理工具顺手用QtPCL搭了个能跑的小软件。对刚入门三维视觉的朋友来说这玩意儿可能比啃论文实在——毕竟直接上手操作才是王道。咱们先看看它能整哪些活![点云处理界面示意图]假装这里有张软件界面截图颜色魔法这块挺有意思PCL的Visualization模块给了现成的调色板。比如给点云加高程色带pcl::visualization::PointCloudColorHandlerGenericFieldPointT color_handler(cloud, z); viewer-addPointCloudPointT(cloud, color_handler, sample cloud);这里的z字段直接对应了点云Z坐标值换个intensity就能切到强度着色。Qt的QSlider控件绑个颜色映射范围实时拖动效果立竿见影。基于C的Qt和PCL开发的点云显示与交互软件适合图形图像新人及研究生快速了解点云数据处理及编程开发工作支持功能包括 1、颜色渲染 2、法向量等属性计算 3、自动滤波 4、目标剪裁 5、几何量测 6、目标分割 7、点云配准 8、曲面构建 备注基于cmake编译支持跨平台linux和windows下均可运行。 本次服务不包括源码编译需要自行编译。 Qt5.12.0 PCL 1.11.0 VTK 8.2.0法向量计算是很多操作的基础PCL的NormalEstimation类封装得挺利索pcl::NormalEstimationOMPPointT, pcl::Normal ne; ne.setNumberOfThreads(4); // 多线程加速 ne.setInputCloud(cloud); ne.setSearchMethod(tree); ne.setRadiusSearch(0.03); // 搜索半径决定细节程度 ne.compute(*normals);注意这里的OMP版本比单线程快不止一星半点特别是在处理百万级点云时。计算完的法向量可以用小线段可视化配合Qt的复选框控制显示/隐藏。交互裁剪功能用了PCL的CropBoxpcl::CropBoxPointT cropFilter; cropFilter.setInputCloud(cloud); cropFilter.setMin(min_pt); cropFilter.setMax(max_pt); cropFilter.filter(*cropped_cloud);配合Qt的OpenGL窗口实现实时框选这里有个坑——PCL的坐标系和QtOpenGL的坐标系方向需要统一否则选中的区域会漂移。软件里最实用的可能是一键滤波把常用的统计滤波、半径滤波做成组合拳// 先去掉离群点 pcl::StatisticalOutlierRemovalPointT sor; sor.setMeanK(50); sor.setStddevMulThresh(1.0); // 再降采样 pcl::VoxelGridPointT voxel; voxel.setLeafSize(0.01f, 0.01f, 0.01f);这种流水线处理用Qt的QProgressBar显示进度很合适毕竟点云处理动不动就卡界面。说到跨平台CMakeLists里关键配置是这几个find_package(Qt5 COMPONENTS Core Widgets OpenGL REQUIRED) find_package(PCL 1.11 REQUIRED COMPONENTS common io visualization) target_link_libraries(${PROJECT_NAME} Qt5::Widgets ${PCL_LIBRARIES} vtkRenderingOpenGL2)Windows下记得把VTK的dll扔对位置Linux则需要处理OpenGL的依赖问题。实测在Ubuntu 20.04和Win10上都能顺利编译。对想入门点云处理的同学建议从这几个方向下手先玩转PCL的IO模块理解点云数据结构用Qt做几个简单的交互控件旋转/平移/缩放尝试组合不同的算法模块比如先分割再测量学会用CloudCompare比对处理结果这软件虽然没上复杂算法但胜在把基础操作串起来了。下次考虑加个点云分类功能不过那又是另一个深坑了...笑