CloudCompare插件编写
更新时间:2024-04-09 19:22:01 阅读量: 综合文库 文档下载
1、 进入源码目录E:\\OpenSource\\OpenLidar\\CloudCompare\\trunk-2.5.0\\qCC\\plugins,在该文
件夹下有一个“qDummyPlugin”的文件夹,拷贝它到当前文件夹,并改名为“qMyPlugin”。进入文件夹内部,会发现有将头文件及CPP名字都改为“qMyPlugin”,将CMakeLists.txt文件中多有的“DUMMY”都用自己的插件名代替,最后进入…\\plugins\\CMakeLists.txt中,在文件的最后添加插件的链接:add_subdirectory (qMyPlygin);
2、 修改头文件以及CPP文件,实现插件功能;在头文件中把所有Dummy替换成My,并将
宏定义中的DUMMY替换成MY;
在CPP文件中也与dummy进行相关操作; 3、 CMake编译,在VC2010中生成工程
qPCL插件运行
getActions()加载插件的各子项的每一个工具函数的返回值为消息; addFilter( new LoadPCD() );
,调用addFilter()函数,addFilter()函数以PCL插件
调用connect()函数,这是QT的消息,将filter的信号newEntity()与当前对象的槽函数handleNewEntity()链接,触发handleNewEntity(),将打开PCD文档这一按钮添加到工具条中。 loadPCD()在被点击到时,会弹出相关对话框,调用文件读取函数,它得到的知识PCD文件的路径,并将其存储在路径数组m_filename中;
在函数compute()中,通过loadSensorMessage()函数将点云加载进来,多个点云的加载时通过for循环将m_fileneme中的个点云加载进来的。
loadSensorMessage()函数如下:
至此,点云被加载进内存; addFilter( new SavePCD() ); 加载保存PCD文件的相关功能;
addFilter( new NormalEstimation());
NormalEstimation():实现对点云的法线进行估计 获取视图点云数据的
在qPCL插件上添加其他功能 首先在CloudCompare源文件路径:
E:\\OpenSource\\OpenLidar\\CloudCompare\\trunk-2.5.0\\qCC\\plugins\\qPCL\\PclUtils\\filters 该文件下,添加自己想要的插件的头文件和源文件,可以直接创建其中某个插件的副本,然后更名为自己想要的额插件,以添加VoxelGrid为例:
如果需要弹出对话框进行参数设置,则需使用Qt designer进行对话框的设计,保存文件生成ui文件
在左边的Widget Box中可以拖动相关事件到对话框中,在右边的参数设置栏中可以修改其参数,比如类名等;
得到的ui文件在VC2010中打开便可看到其对话框的标题设置、变量名及初始值。
在设置好对话框后将ui文件放入到如下路径中:
CloudCompare\\trunk-2.5.0\\qCC\\plugins\\qPCL\\PclUtils\\filters\\dialogs; 并建立源文件及头文件,也可以对已有的文件拷贝(推荐)
资源建立好后,就开始修改CloudCompare的代码。
在qPCL.cpp中的getAction()函数中添加addFilter( newVoxelGrid()),并包含其头文件在CPP文件中#include
如果是从原有文件考过来的副本,那么进入VoxelGrid.h中进行相关的代码修改即可。
其中修改的部分由宏定义、类名、构造函数、以及成员变量(此处的成员变量时用来传递体素化栅格叶大小的浮点型的数据)。 然后是在源文件中进行修改:
利用查找替换功能,将原类名全部替换成VoxelGrid,并添加相关头文件以及对话框头文件:
在构造函数中进行插件说明修改,使得插件在鼠标移动到该处的时候其下方会出现相关的说明
从对话框中获取参数的函数也需要正对具体情况进行修改。
在算法实现函数compute()函数中调用相关滤波算法的实现:
工具条相关图标的添加(这个很重要,如果添加错误可能导致图标对应的功能紊乱)
之后就是在filtering.cpp中添加voxelgrid()函数,在此之前要在该cpp文件中添加相关头文件
最重要的是要在头文件中对该函数进行声明,然后在qPCL.cpp中声明filtering.h(否则voxelgrid()函数无法识别)
最后一步,对VoxelGridDlg.h和VoxelGridDlg.cpp文件进行修改
VoxelGridDlg.h修改如下,主要是修改宏定义、添加头文件,类名可以不做修改,但类从何处继承而来就需要改好:
VoxelGridDlg.cpp修改如下,也只需要改写ui的继承关系即可。
至此重新生成工程,在生成INSTALL就可以把EXE文件及相关的动态库都导入到一个文件夹中。 效果如下:
正在阅读:
CloudCompare插件编写04-09
2017届广东省百所学校高三质量分析联合考试政治试题及答案09-05
科学家名人名言05-29
长春理工大学创新学分03-31
集宁区教育科技局02-15
3ds max 三维动画设计技能教程 第4章举一反三-步骤 - 图文03-22
生理学课后习题答案04-01
3对偶原理习题11-25
2015年北京市昌平区政府工作报告03-18
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- CloudCompare
- 插件
- 编写
- 大学生创业人际关系比自身能力更重要
- 《泵与风机》学后总结
- 高级评茶员 理论知识
- 论中古神话与古希腊神话的异同
- 2016年咨询师继续教育遥感试题94分
- 声学基础课后答案
- FindBugs错误修改中文说明大全
- 企业数据标准化
- 乡镇团委2018年上半年工作总结及下半年工作计划
- 2015年事业单位新进人员培训之阳光心态课后测试及答案
- HRM3400E立磨技术协议解读
- 美国气候类型、特点及形成原因
- 2017-2018学年教科版三年级语文下册单元测试卷及答案-第七单元
- 试说泰山别称“太行山”
- 《中国河湖大典》初稿选编(第2期)
- 道路交通疏解方案 - 图文
- 2015申报表讲义--辛连珠(1)
- 生物化学题库(含答案)
- 学校结核病防控工作规范(2017版)
- 高二复数乘除法运算法则方法答案