MacBook M1软件安装之CloudCompare(可读取pcd格式)


简介

​  由于工作需要对点云进行处理,上网找了一些点云处理工具,最终选择用CloudCompare(http://www.cloudcompare.org/)这款软件。由于本人用的m1芯片的macos,而且平时处理点云使用的pcl库,点云一般都保存为.pcd格式,但是直接从官网下dmg安装后发现不能打开pcd格式的点云文件。可以看到官方提供的dmg安装包并不包含pcl的插件,ccViewer也没有提供pcd格式文件的查看。于是只能自己动手从源码编译了!
在这里插入图片描述
在这里插入图片描述

源码编译

1. 下载源码

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

​ 熟悉的git clone将源码保存到本地了。

2. 编译

2.1 尝试编译

​   得到源码后肯定是想办法编译了,简单粗暴,在源码仓库的主目录下

mkdir build
cd build
cmake ..

​  这时应该会报很多错误,笔者也忘记具体解决了多少个错误才编译成功,从git更改的文件来复现一波。

2.2 CMakeLists修改

  大部分的问题都是出在找不到头文件找不到库这一类的东西上。

  • 问题1:ccMath.h头文件找不到。

    ​  可以发现CloudCompare中很多文件包含了ccMath.h的文件,但是整个仓库都搜不到这个头文件。其实这个文件包含在他们另一个工程CCCoreLib中(源码地址:https://github.com/CloudCompare/CCCoreLib)。

    ​  对于这个工程的编译没什么问题,就是git clone,mkdir build, cd build, cmake …, make -j4这么一套下来就编译成功了。不过笔者在这里对CMakeLists.txt文件稍作了修改

    set(CMAKE_BUILD_TYPE "release") # 此行添加在cmake_minimum_required( VERSION 3.10 ) 之后
    option( CCCORELIB_SCALAR_DOUBLE
    	"Define ScalarType as double (instead of float)"
    	ON
    ) # 此行的参数默认是OFF,笔者将其改为了ON,浮点数用double(精度更高嚒)
    

  这里笔者就没make install了,因为m1的磁盘权限管理比较坑,往往会因为创建不了文件夹导致失败。反正编译的库和头文件已经得到了。库文件为build下的libCCCoreLib.dylib,头文件目录就是源码主目录下的include以及build/export(编译完在这里悄悄生成了一个头文件 - 。-)。
  接下来继续回到CloudCompare这个工程,在主目录下的CMakeLists.txt中做以下修改:

# 以下行添加在project( CloudCompareProjects )后
set(CMAKE_BUILD_TYPE "release")
set(CCCORELIB_INCLUDE_DIR /Users/machineboy/repo/CCCoreLib/include  ~/repo/CCCoreLib/build/exports) # 这里改为自己电脑上对应的路径
link_directories( ~/repo/CCCoreLib/build)
include_directories(${CCCORELIB_INCLUDE_DIR})

​   至此,问题1解决,主要是对CCCoreLib的依赖问题。

  • 问题2: ScalarType类型未定义

      打开CCCoreLib工程的include/CCTypes.h文件,ScalarType就是在这定义的,但是是根据宏定义来定义的,这就方便了,在cmake文件中定义一个宏就可以了。
    在这里插入图片描述

  打开cloudcompare工程主目录下的CMakeLists.txt,同样在project语句后添加以下宏定义:

add_definitions(-DCC_CORE_LIB_USES_DOUBLE)

  还记得笔者在问题1中修改的的以下语句吧

option( CCCORELIB_SCALAR_DOUBLE
	"Define ScalarType as double (instead of float)"
	ON
) # 此行的参数默认是OFF,笔者将其改为了ON,浮点数用double(精度更高嚒)

  如果这里使用默认参数OFF,则上述宏定义语句要变成

add_definitions(-DCC_CORE_LIB_USES_FLOAT)
  • 问题3:找不到vtkxxx头文件(好像是这个吧,记不清楚了)

  同样在CloudCompare主目录的CmakeLists.txt中添加头文件目录

include_directories(/opt/homebrew/Cellar/qt@5/5.15.2/lib/QtConcurrent.framework/Versions/5/Headers/) #改为自己电脑上的路径
  • 问题4: extern/CCCoreLib下找不到CMakeLists.txt文件

  注释掉lib/qCC_db的cmakelists.txt中的add_subdirectory( extern/CCCoreLib EXCLUDE_FROM_ALL )

  • 安装qpcl插件

  将plugins/core/Standard/qPCL/CMakeLists.txt中的安装选项打开,要安装其他插件同理。

# option( PLUGIN_STANDARD_QPCL "Install qPCL plugin" OFF )
option( PLUGIN_STANDARD_QPCL "Install qPCL plugin" ON )

2.3 完成编译

  这时候安装2.1的步骤直接编译应该就能编译成功了,虽然中间会有一大串警告。这时候在build/qCC文件夹下会有CloudCompare.app这个程序,打开,开心地拖进去pcd文件,纳尼?还是识别不了pcd格式。

  不要慌,打开build/ccPlugins文件夹,会发现其中有几个动态库,全部复制。然后进入CloudCompare.app/Contents,创建一个文件夹名称叫PlugIns,进入文件夹,将刚刚复制的动态库粘贴到这。

  大功告成,重新打开CloudCompare.app程序,拖入pcd文件,成功读取。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值