浅尝CloudCompare二次开发

一、环境准备

CloudCompare

文档地址:https://www.cloudcompare.org/
CloudCompare源码分为以下几个块:
CCLib (core algorithms)
qCC_db (data library)
qCC_io (file I/O library)
qCC_gl (3D display library)
qCC (main application)
CloudCompare借由CCLib,qCC_db,qCC_io,qCC_gl几个块在qCC中实现软件的主要功能。

源码地址:https://github.com/CloudCompare/CloudCompare

笔者工作环境

工具版本
Visual Studio2022
QT5.15.2
CMake3.24.2

二、编译CloudCompare

编译可以参考官方的编译文档:https://www.cloudcompare.org/doc/wiki/index.php/Compilation
1.CMake编译
编译CloudCompare

  • 第一次Configure会报错/libs/qCC_db/extern/CCCoreLib没东西,需要将https://github.com/CloudCompare/CCCoreLib的内容下载下来放到/libs/qCC_db/extern/CCCoreLib/下。
  • 配置一下QT的环境,虽然在PATH中配置好了会被自动找到。
    QT环境配置
    configure参数选择
  • 第一个参数选了scalar就用double表示,不选就是float,第二个生成动态库,第三个参数是否使用CGAL这个几何图形计算库,第四个参数是否使用QT中的多线程,第五个参数是否使用英特尔的TBB的多线程,第六个参数是否使用内存泄漏可视化工具。这里只使用最基础的选项。
  • 再次点击configure,设置CMAKE_INSTALL_PREFIX的位置。
  • 点击generate,编译配置结束。
  • 打开build文件夹中的工程。
    工程文件
  • 选择需要的版本,生成INSTALL。
    生成install
  • 生成成功,install路径中就有了诸多动态库。
    生成结果生成成功
  • 将生成的所有dll都复制到\build\qCC\Release\ 下,若选择的Debug则放在Debug下。
  • 将CloudCompare设置为启动项目。
    运行CloudCompare
  • 运行后报错。
    Qt报错
  • 原因是程序执行时,默认会在当前目录下查找库文件,解决方法就是把QT的\plugins\platforms下的动态库文件拷贝到\build\qCC\Release\plugins\platforms\ 下。这里需要自己建文件夹。
  • 到这里,就可以运行CloudCompare了。
    运行成功
  • 这一步得到了CloudCompare的几个动态库文件,下一步将进行CloudCompare的二次开发。

三、添加自定义模块

1.目的

CloudCompare是一款好用的开源点云测量操作软件,我对其进行二次开发的目的是希望能够添加获取点云的方式。获取点云的方式使用的是结构光三维成像技术中的一类,即使用投影仪和相机来获取物体的三维面形。为达此目的,需要添加相机的操作、显示界面,结构光三维成像的算法。

2. 操作步骤

  • 功能主要是实现两个窗口,一个是相机窗口,负责相机的数据转换字节数据转QImage,一个是相机显示(需要将显示窗口提升为相机窗口)投影仪控制和相机控制,重建显示,日志等都可以依托CloudCompare本身的功能。
  • 可以看到.ui文件都是自定义生成的,我们可以照葫芦画瓢来定义我们的ui文件。
    ui自定义
    命令行
setlocal
C:\Qt\5.15.2\msvc2019_64\bin\uic.exe -o D:/CODEWORKPLACE/cc2/build/qCC/ui_FPPDlg.h D:/CODEWORKPLACE/cc2/build/qCC/FPPDlg.ui
if %errorlevel% neq 0 goto :cmEnd
:cmEnd
endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone
:cmErrorLevel
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd

说明
Generating ui_FPPDlg.h
输出
D:\CODEWORKPLACE\cc2\build\qCC\ui_FPPDlg.h

我们先定义好需要的两个类,改动这两个类的ui文件的生成工具。

  • 新添加的.h文件也需要自定义,先把QT的moc.exe放到当前的路径下。
    h文件定义
    命令行
    moc.exe D:\CODEWORKPLACE\cc2\build\qCC\FPPDlg.h -o D:\CODEWORKPLACE\cc2\build\qCC\moc_FPPDlg.cpp
    输出
    moc_FPPDlg.cpp
    附加依赖项
    moc.exe
    FPPDlg.h

  • 生成moc_FPPDlg.cpp后,将cpp文件添加到项目中。

  • 添加自定义类的方法就是如此简单,接下来就是自己设计类,实现自己想要的功能啦。

四、效果展示

自定义界面

界面

  • 暂且只添加了拍摄和重建的功能,更多的功能可以陆续完善。

重建结果

  • 点击重建后,利用逆相机模型和相移加格雷码方法生成的点云就能够被添加到CC中了。
    重建结果

  • 我们就可以使用CC实现点云的去噪点和拼接等功能。去噪点
    点云拼接

  • 分享结束,更多功能可以自由探索。

  • 23
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值