前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >简析CloudCompare文件夹之间的关系

简析CloudCompare文件夹之间的关系

作者头像
点云PCL博主
发布2022-12-27 18:14:27
1K0
发布2022-12-27 18:14:27
举报
文章被收录于专栏:点云PCL

公众号致力于分享点云处理,SLAM,三维视觉,高精地图相关的文章与技术,欢迎各位加入我们,一起每交流一起进步,有兴趣的可联系微信:920177957。本文来自点云PCL博主的分享,未经作者允许请勿转载,欢迎各位同学积极分享和交流。

CC文件间的依赖关系

ccViewer文件夹是CC单独实现的一个用于可视化小模块,依赖的库有四个,以及包含了common文件中实现的基础类。

其中依赖的链接库有五个分别为:

CC_FBO_LIB,CC_CORE_LIB,QCC_DB_LIB ,QCC_IO_LIB,QCC_GL_LIB。

CC_FBO_LIB:该库为lib文件夹下CCFbo文件编译的结果,主要有四个头文件,分别为

ccShader.h,ccGlFilter.h,ccFrameBufferObject.h,ccBilateralFilter.h

  • ccShader类是继承了QOpenGLShaderProgram库用于实现点云着色功能。
  • ccGlFilter类 默认的GL滤波器接口,GL滤波器是应用于纹理(通常是渲染场景)的着色器的组合。
  • ccFrameBufferObject类,FBO类封装与QOpenGLFramebufferObject类相比,该类提供了以下可能性:获取附加的深度纹理ID以及附加自定义颜色纹理。
  • ccBilateralFilter继承ccGlFilter实现对shader的双边滤波。双边滤波器是图像的非线性、边缘保持和降噪平滑滤波器,它实现每个像素的强度替换为附近像素的强度值的加权平均值,该权重可以基于高斯分布,至关重要的是,权重不仅取决于像素的欧几里得距离,还取决于辐射差异(例如,距离差异,如颜色强度、深度距离等),这将有益于保留明显的边缘位置。

CC_CORE_LIB: 这个为CC自带的核心的算法库,这部分内容在上一篇文章中有详细介绍,在编译的时候会被编译成CC_CORE_LIB库。

QCC_DB_LIB 实现基础的点,线,面,法线,圆,椭圆,立体框,模拟相机视角,mesh等等三维点云常用的属性。

QCC_IO_LIB 实现对各种点云数据操作的IO类,比如*.txt *.asc *.neu *.xyz *.pts *.csv等Ascii格式的点云打开,保存,读,写,以及ply,shp以及图像等格式的数据的操作。当然这些数据的处理也是继承了Qt中IO的类。

QCC_GL_LIB 实现对OpenGL的可视化的库,比如实现创建GL的窗口,以及可视化的参数配置窗口

ccViewer文件夹依赖的common没有编译成库的形式,其主要实现了一些弹窗,界面按钮的功能,pick点云,插件管理等功能。也就是各种鼠标点击,拖拽的信号处理的实现。

qCC文件是CloudCompare主要实现文件夹,包含了对主界面的中各个功能的实现。相比ccViewer多了一个qcustomplot库的依赖,QCustomPlot是一个用于绘图和数据可视化的Qt C++构件, 它没有进一步的依赖关系,并有很好的文档记录, 该绘图库专注于制作美观,制作高品质的2D图表,以及为实时可视化应用程序提供高性能。QCustomPlot可以导出为各种格式,如矢量化的PDF文件和光栅化图像,如PNG,JPG和BMP。QCustomPlot是在应用程序内部显示实时数据以及为其他媒体生成高质量图的解决方案。

CC文件夹之间的依赖关系

CC类继承QT为什么加上Q_OBJECT?

Q_OBJECT是Qt中的一个宏定义,这是因为Qt的语法是在c++的基础上拓展的,所以在Qt程序的编译过程中,直接用gcc这些标准编译器进行编译是不可行的,因为gcc不能识别这些拓展性的语法,比如信号和槽(Signal and Slot),所以Qt引入了moc这一编译器。moc(Meta-Object Compiler),即元对象编译器,Qt 程序在交由标准编译器编译之前,会使用 moc 分析 C++ 源文件,假设它发现某个头文件中包括了 Q_OBJECT这个宏,需要注意的是, moc 只处理头文件中标记了Q_OBJECT的类声明,不会处理 cpp 文件中的类似声明,则会生成另外一个 C++ 源文件,这个源文件里包括了 Q_OBJECT 宏的实现代码,并且文件名称将会是原文件名称前面加上 moc_ 。这个新的文件会和原本的c++源文件一起进入编译系统,最终被链接到二进制代码中完成编译工作。所以我们可以注意到CloudCompare中大多头文件中定义类的时候都加上了Q_OBJECT。

CC模块划分

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-11-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 点云PCL 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档