开源项目推荐:3D点云处理软件CloudCompare,基于Qt和OpenGL

简介: 开源项目推荐:3D点云处理软件CloudCompare,基于Qt和OpenGL

3D point cloud and mesh processing software,Open Source Project,Based on Qt5.


CloudCompare是一款基于GPL开源协议的3D点云处理软件,可以在Windows、MacOS和Linux上运行。我们可以通过阅读其源码来一窥3D点云处理的基本算法,也可以通过设计新的plugin来拓展本软件。


CloudCompare是一个三维点云(网格)编辑和处理软件。最初,它被设计用来对稠密的三维点云进行直接比较。它依赖于一种特定的八叉树结构,在进行点云对比这类任务时具有出色的性能。此外,由于大多数点云都是由地面激光扫描仪(例如LMI)采集的,CloudCompare的目的是在一台标准笔记本电脑上处理大规模的点云——通常超过1000万个点云。例如在一台带有双核处理器的笔记本电脑上,计算出300万个点到14000个三角形网格的距离需要10秒。


image.png



1、官网


http://www.cloudcompare.org/


http://www.cloudcompare.org/forum/


主程序源码,基于Qt5

https://github.com/CloudCompare/CloudCompare


CCLib库(包含核心算法)

https://github.com/CloudCompare/CCCoreLib


其他组件:

https://github.com/CloudCompare/CloudCompare/tree/master/libs


qCC_db(数据库)


qCC_io(文件I/O库)


qCC_gl(基于OpenGL的3D显示库)



2、源码编译


准备好环境:VS2017+Qt5.12.9 x64


(1)把CCCoreLib源码包解压到CloudCompare旗下的路径:


\CloudCompare-master\libs\qCC_db\extern\CCCoreLib


(2)使用cmake生成VS2017 x64的工程。其中Plugin的选项:


默认情形下,只有PLUGIN_IO_QCORE打钩。除了PLUGIN_IO_QCORE是必需品之外,CloudCompare不需要任何plugin。


有兴趣的读者,可以勾选PLUGIN_EXAMPLE_???这几个插件学习研究一下下。

image.png



(3)一键编译到底,成功!最终会生成两个exe,分别是主程序CloudCompare和小工具ccViewer。


\CloudCompare-master\build64\qCC\Debug\CloudCompare.exe


\CloudCompare-master\build64\ccViewer\Debug\ccViewer.exe


如果勾选了插件文件,则需要手动把.dll文件拷贝到以下路径:


\CloudCompare-master\build64\qCC\Debug\data\plugins


(4)ccViewer是配套的小工具,可以查看3d视图。它支持很多种文件格式,最简单的是txt文本。


我们输入以下xyz坐标,即可查看3d效果。



image.png


image.png


3、参考文献


《CloudCompare:三维点云(网格)编辑和处理工具》


微信公众号:点云PCL ,作者:dianyunPCL


《基于Qt的OpenGL点云显示基本框架》


https://blog.csdn.net/bohaijun_123/article/details/78107621


我的另一篇博文:


https://libaineu2004.blog.csdn.net/article/details/108401413



x、题外话


(1)点云库


PCL(Point Cloud Library)是在吸收了前人点云相关研究基础上建立起来的大型跨平台开源C++编程库,它实现了大量点云相关的通用算法和高效数据结构,涉及到点云获取、滤波、分割、配准、检索、特征提取、识别、追踪、曲面重建、可视化等。支持多种操作系统平台,可在Windows、Linux、Android、Mac OS X、部分嵌入式实时系统上运行。如果说OpenCV是2D信息获取与处理的结晶,那么PCL就在3D信息获取与处理上具有同等地位,PCL是BSD授权方式,可以免费进行商业和学术应用。


https://pointclouds.org/


(2)一个精简的开源点云库


Cilantro是一个精简高效的点云数据处理库,编程是C++,依赖项较少,但是相比较于PCL来说,代码更有可读性,PCL中大量的使用C++高级特性,阅读起来比较难并且不易重构拆解代码,而cilantro重点放在了3D案例上,尽量减少了样板代码的数量,包含了对点云常见的操作,是一个比较简单易懂的API,所以该库可以被广泛的模块化,并且支持多维度数据进行操作,同时保证对算法模块的模块化和可扩展性。作者是一位在Magic leap公司工作的计算机视觉工程师,是马里兰大学伯克利分校的计算机科学博士,是感知机器人小组的成员。


https://github.com/kzampog/cilantro


(3)免费的几何库


http://geometryhub.net/overview


BGL (Basic Geometry Library) 包含了三维数据处理最基础的数据结构。用户可以很方便的使用它来开发各种几何相关的算法。


它是免费的,可以无限制的使用,包括科研,商业产品等。


http://geometryhub.net/bgl


Geometry++


Geometry++是一个支持多平台的三维数据处理几何库,可以作为三维数据处理软件的几何引擎来使用


http://geometryhub.net/geometryplusplus


Magic3D


Magic3D提供了三维点云和网格数据处理的基本功能。所有功能的几何算法采用了BGL和Geometry++几何库


http://geometryhub.net/magic3d


(4)三维深度学习之pointnet


http://stanford.edu/~rqi/pointnet/


http://stanford.edu/~rqi/pointnet2/


https://github.com/charlesq34/pointnet


https://github.com/charlesq34/pointnet2


相关文章
|
1月前
|
数据可视化 API vr&ar
探索Qt 3D之旅:从基础到实战,打造引人入胜的三维界面与应用
探索Qt 3D之旅:从基础到实战,打造引人入胜的三维界面与应用
111 2
|
3月前
QT4.7版本的OPENGL的3D旋转模型例子
QT4.7版本的OPENGL的3D旋转模型例子
|
8月前
QT+OpenGL鼠标操作和模型控制
光线追踪法 从鼠标投射 3D 射线, 通过摄像机,进入场景,然后检查该光线是否与某个对象相交。
114 0
|
30天前
|
Linux API iOS开发
【Qt 渲染引擎】一文带你了解qt的三种 渲染引擎,包括栅格引擎(Raster)、OpenGL 和本地绘图系统
【Qt 渲染引擎】一文带你了解qt的三种 渲染引擎,包括栅格引擎(Raster)、OpenGL 和本地绘图系统
23 0
|
1月前
|
机器学习/深度学习 API vr&ar
Qt, OpenCV与OpenGL协同作战:图像处理与三维图形界面的完美结合
Qt, OpenCV与OpenGL协同作战:图像处理与三维图形界面的完美结合
109 4
|
1月前
Qt+OpenGL 打砖块游戏
Qt+OpenGL 打砖块游戏
21 0
|
2月前
|
数据可视化 API vr&ar
qt“五彩斑斓“ opengl
qt“五彩斑斓“ opengl
|
8月前
|
异构计算
QT+OpenGL高级数据和高级GLSL
● OpenGL中的缓冲区 对象管理特定的GPU内存 ● 在将缓冲区绑定到特定的缓冲区目标时候赋予它意义 ● OpenGL在内部会保存每个目标(缓冲区)的引用,并且根据目标以不同的方式处理缓冲区。
97 0
QT+OpenGL高级数据和高级GLSL
|
8月前
|
存储 异构计算
QT+OpenGL深度测试
在前面的文章中,我们渲染了一个3D箱子,并且运用了深度缓冲来防止阻挡的面渲染到其他面的前面。 现在大部分的GPU都提供一个叫做提前深度测试(Early Depth Testing)的硬件特性。提前深度测试允许深度测试在片段着色器之前运行。只要我们清楚一个片段永远不会是可见的(它在其他物体之后),我们就能提前丢弃这个片段。
69 0
|
8月前
|
算法
QT+OpenGL高级光照 Blinn-Phong和Gamma校正
冯氏光照:视线与反射方向之间的夹角不小于90度,镜面光分量会变成0.0(不是很合理,会有清晰的分界线) Blinn-Phone模型采用了半程向量,即光线与视线夹角一般方向上的一个单位向量。当半程向量与法线向量越接近,镜面光分量就越大。
62 0

推荐镜像

更多