文章目录
- 一、简介
- 二、编译过程
- 三、举个栗子
优秀的算法库,值得所有点云爱好者去使用和研究*~*。
一、简介
之前一直没注意到CloudCompare的作者(光头大佬)已经将CloudCompare的算法库与其可视化部分进行了分离,今天正好有同学问了这个问题,才发现这个算法库已经可以单独拿出来进行使用了。该算法库包括CloudCompare大部分的算法过程,如ICP、距离计算、点云分割等等。
二、编译过程
编译过程其实挺简单的,毕竟这个算法库没有PCL点云库那么复杂。
1、首先我们需要下载这个算法库的源代码,官方网址:https://github.com/CloudCompare/CCCoreLib/tree/52262b92b443ed1b552406dc5168047b0ae830d6。
2、下载好源代码之后,使用cmake工具将其生成vs项目。
默认的选项是上面显示的两种,第一个为是否生成动态库,第二个为是否使用Qt的并行库,如果你电脑上没有qt这个选项可以不用选(这个我也尝试过,可以正常进行编译),因为我之前配置过CloudCompare,这里我就将其选上。最后,别忘了修改安装路径。
3、对算法库CCCorelib进行编译与安装。
感觉作者可能没把cmake中安装的东西写全,安装之后的文件夹只有include与lib,所生成的动态库.dll文件并没有安装到这个目录中,不过也没关系,我们可以手动复制一下。手动创建一个bin文件夹,之后找到CCCorelib.dll文件,复制过来即可。如下所示:
三、举个栗子
在安装好这个算法库之后,可以简单创建一个vs项目,并配置一下头文件与库文件路径:
添加下面的代码可以进行一个简单的测试:
#include <CCCoreLib/PointCloudTpl.h>
#include <CCCoreLib/GenericIndexedCloudPersist.h>
#include <CCCoreLib/CCGeom.h>
#include <string>
#include <iostream>
using PointCloud = CCCoreLib::GenericIndexedCloudPersist;
int main() {
CCCoreLib::PointCloudTpl<PointCloud> ccCloud;
ccCloud.addPoint(CCVector3(1, 1, 1));
ccCloud.addPoint(CCVector3(1, 1, 1));
ccCloud.addPoint(CCVector3(1, 1, 1));
ccCloud.addPoint(CCVector3(1, 1, 1));
std::cout << "点云中的点数量:" << ccCloud.size() << std::endl;
system("pause");
return 0;
}
最后别忘了将CCCorelib.dll库复制到执行目录中或者添加到系统变量中也可以:
执行效果:
该算法库没有可视化部分,毕竟已经被单独分离了出来,感觉可以和PCL混合使用更简便一些。
OK,就这些了,希望更多人可以使用到CloudCompare中优秀的算法,good。