1.浅谈:点云库Open3D、PCL以及CGAL(C++)
2.点云|CloudCompare源码编译教程
3.开源科学工程技术软件介绍 – EDA工具KLayout
4.开源科学工程技术软件介绍 – 点云处理软件CloudCompare
5.如何把CloudCompare中的ccViewer模块独立出来?
浅谈:点云库Open3D、PCL以及CGAL(C++)
本文旨在比较分析点云处理库Open3D、PCL及CGAL(C++),以深入理解其特性、功能与上手难度。源码串流
Open3D,一个面向对象的点云库,提供了丰富的点云与曲面网格算法。其语言设计简洁,易于理解,适合初学者。Open3D模块化高,内聚松耦合,代码量较少,适合快速开发。然而,泛型编程实现较少,代码复用性与灵活性不及PCL和CGAL。
PCL是一个大规模、独立的开源项目,广泛用于2D/3D图像与点云处理。其大量使用泛型编程,提供丰富的点云算法,尤其在点云数据处理方面优势明显。虽然计算效率一般,抽奖小程序源码但学习成本较高,适合深入学习泛型编程。
CGAL(计算几何算法库)是一个大型C++几何库,提供几何数据结构与算法,如Delaunay三角网、网格生成等。CGAL提供复杂的几何内核,实现完全分离状态,复用性和灵活性高。学习CGAL需具备一定基础,其源码提供丰富学习资源。
在可视化方面,CloudCompare及Meshlab提供插件式与非插件式二次开发,强调美观简洁,适合处理可视化问题。这两个项目提供大量源代码,涉及点云分割、曲面拟合、分类与曲面重建等,值得学习借鉴。
学习建议:面对错误,不应害怕,这是学习过程的必要部分。持续学习,保持积极态度。十三水源码了解这些库的局限,早睡早起,保持身体健康。最后,阅读前保持批判性思维,验证信息。
点云|CloudCompare源码编译教程
这篇教程详细介绍了如何在VS中配置并使用CloudCompare的源码。首先,推荐参考的博客提供了更为详尽的库配置,包括LasTool和PDAl等。
步骤一:在VS中,进入工具选项,搜索并安装Qt Visual Studio Tools,按照安装流程直到结束。关闭页面后,退出VS,并等待VSIX Installer的安装。
安装完成后,打开VS,你将看到Qt VS Tools的工具栏,方便后续操作。
接着,你需要下载适合自己VS版本的QT,可以从download.qt.io获取。安装时,图库源码确保选择与VS兼容的版本,并在系统设置中更新环境变量,例如将QT安装路径(本文示例为D:\QT\5.9.8\msvc_\bin)添加到系统路径中。
最后,访问GitHub上的CloudCompare源码仓库(github.com/CloudCompare),下载Release Version 2..2版本的源码。至此,VS的配置和CloudCompare源码的下载与安装就已完成,你可以开始下一步的开发工作了。
开源科学工程技术软件介绍 – EDA工具KLayout
今天向大家介绍一款由德国团队开发的开源EDA工具——KLayout。
KLayout是基于C++开发的,其用户界面采用Qt技术。这款软件支持Windows、MacOS和Linux操作系统。用户可以通过以下网址下载安装程序:klayout.de/build.html。
关于KLayout的图形用户界面,您可以在官网查看:klayout.de/。
KLayout的源代码托管在Github,具体地址为:github.com/KLayout/klay...
KLayout自年月发布0.版以来,每年都会进行多次更新。目前最新版本为年5月发布的0..1版。
以下是KLayout提供的一些功能截图:klayout.de/galleries.ht...
关于更多开源科学工程技术软件的介绍,您可以参考以下文章:
《开源科学工程技术软件介绍 – Silx》
《开源科学工程技术软件介绍 – Klampt》
《开源科学工程技术软件介绍 – 参数化三维3D软件Dune 3D》
《开源科学工程技术软件介绍 – GPS日志文件查看器GPXSee》
《开源科学工程技术软件介绍 – 三维3D软件Chili3D》
《开源科学工程技术软件介绍 – 集成电路设计软件XicTools》
《开源科学工程技术软件介绍 – 天文学软件Cosmonium》
《开源科学工程技术软件介绍 – 计算流体力学软件FluidX3D》
《开源科学工程技术软件介绍 – 点云处理软件CloudCompare》
《开源科学工程技术软件介绍 – 野外火灾建模软件WindNinja》
《开源科学工程技术软件介绍 – 电子设计自动化EDA软件Horizon》
《开源科学工程技术软件介绍 – 有限元网格生成器Gmsh》
《开源科学工程技术软件介绍 – Mesh网格处理软件MeshInspector》
《开源科学工程技术软件介绍 – 医学图像处理框架FAST》
《开源科学工程技术软件介绍 – 生物力学有限元分析软件FEBio和FEBio Studio》
《开源科学工程技术软件介绍 – DICOM医学查看器Weasis》
《开源科学工程技术软件介绍 – 测量系统集成软件ITOM》
……
开源科学工程技术软件介绍 – 点云处理软件CloudCompare
点云(Point Cloud)是一种空间中的点数据集,主要用于表示三维形状或对象,通常通过三维扫描仪、微信公众号源码激光雷达、摄像头、RGB-D相机等设备获取。每个点的位置由一组笛卡尔坐标(X,Y,Z)描述,可能还包含色彩信息(R,G,B)或物体反射面强度(Intensity)信息。
点云广泛应用于多个领域,例如建模、设计、质量控制、逆向工程、虚拟现实、增强现实等。CloudCompare就是一款专门用于处理三维点云和三角形网格的软件,最初设计目的是在两个三维点云或点云与三角形网格之间进行比较,即“云比较”。它采用八叉树结构进行优化,能够处理大量点云数据,通常超过万个点,甚至高达1.2亿个点,内存占用超过2GB。
CloudCompare使用C++开发,用户界面基于Qt,图形渲染使用OpenGL,支持Windows、MacOS和Linux操作系统。用户可以从其官方网站cloudcompare.org下载安装程序,源代码则在Github上:/ProjectPhysX/CloudCompare。该软件自年开始开发,年开源,年7月开始在GitHub上发布版本,最新的2..1版发布于年3月。
CloudCompare功能丰富,包括但不限于数据导入、导出、可视化、滤波、统计、对齐、几何变换等操作。用户可以访问官方网站获取更多详细信息和功能介绍,或者在GitHub上查找最新的开发动态和用户社区。
在科学工程领域,还有许多其他开源软件,如用于数据处理的Silx,用于机器人开发的rviz,用于可视化中间件的Visualization Library,用于科学可视化分析的Graphia等。此外,还有用于科学可视化和数据可视化的工具,如用于医学图像计算平台的3D Slicer,用于数据可视化的PyVista,用于地理信息的GeoJS等。
如何把CloudCompare中的ccViewer模块独立出来?
如何将CloudCompare中的ccViewer模块独立出来
CloudCompare是一个流行的3D点云数据处理软件,其中ccViewer作为其内置的可视化工具,为用户提供了查看和分析点云数据的功能。然而,有些用户可能希望将ccViewer作为一个独立的工具使用,而不是在CloudCompare中运行。为了实现这一目标,需要将ccViewer的源代码和依赖的库进行分离,并整合到一个独立的工程中。以下将详细说明这一过程。
ccViewer是一个基于Qt5和OpenGL的三维点云可视化工具,包含了多种显示和交互模式,且支持插件扩展功能。但若要将其作为独立库使用,则需将其源码和依赖项分离,仅保留自带功能,并移除插件模块的相关代码和头文件。
首先,了解ccViewer的依赖项。这些依赖项主要包含CC、CCFbo、ccViewer、common、qCC_db、qCC_glWindow和qCC_io等。其中,CC是CloudCompare的核心库,包含了大部分点云数据处理功能;CCFbo是Framebuffer Object(FBO)相关的库,用于离屏渲染;ccViewer是主要源代码;common是一些常用的工具函数和类;qCC_db用于处理数据库;qCC_glWindow是OpenGL窗口相关的库;qCC_io则负责文件输入输出。
接下来,根据了解的依赖项对每个模块的CMakeLists文件进行修改和适配,删除ccViewer中用到的plugin模块内容,确保其更加独立。
创建一个新工程文件夹,并将依赖项的源代码和头文件放入其中。注意保持源代码结构的层次,并为每个依赖项创建对应的子文件夹,将源代码和头文件放入其中。
在新工程文件夹中创建CMakeLists.txt文件,并在其中指定依赖项的路径和构建规则。使用add_subdirectory命令将每个依赖项添加到工程中,并在target_link_libraries命令中指定依赖项之间的链接关系。此外,还需指定生成可执行文件的名称和相关的源代码和头文件。
编译工程时,使用CMake管理依赖项和整个工程的构建。在构建过程中,需注意可能的警告信息,可以忽略它们。使用vs打开生成的工程文件,进行编译后运行。
通过这份简化的代码,学习如何基于QT实现各种功能的按钮,理解CC源码的编程风格,并尝试添加按钮或鼠标拖拽操作。在基础的可视化功能上,可以尝试添加如加载PCD文件和鼠标选点等功能。
在扩展与其他功能时,需要学习CMake的语法,如set(CMAKE_POSITION_INDEPENDENT_CODE ON)用于生成位置无关代码,set(CMAKE_AUTOMOC ON)启用自动 moc 机制,qt5_wrap_ui用于将Qt Designer .ui 文件转换为C++源文件,generate_export_header用于生成导出头文件等。
在实际操作过程中,可能遇到一些bug,这些问题不一一列举。对于感兴趣的朋友,可参考代码:github.com/yaoli/cc...,并通过知识星球提问或交流。此外,可访问相关资源,如自动驾驶及定位相关分享、SLAM及AR相关分享等,以获取更多文章和信息。分享主题涵盖三维视觉、点云、高精地图、自动驾驶、机器人等领域。加入知识星球,共同分享学习,期待有想法、乐于分享的小伙伴加入。