CloudCompare算法库(CCCorelib)编译与使用

news2024/11/24 4:39:18

文章目录

  • 一、简介
  • 二、编译过程
  • 三、举个栗子

优秀的算法库,值得所有点云爱好者去使用和研究*~*。

一、简介

之前一直没注意到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。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/87075.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

以太坊地址Address介绍附代码示例

Address是什么 通常情况下&#xff0c;地址代表一外部账户或合约账户&#xff0c;它们都可以在区块链上接收&#xff08;目标地址&#xff09;或发送&#xff08;源地址&#xff09;。 更具体地说&#xff0c;它是根据ECDSA算法&#xff0c;从公钥的Keccak-256哈希值的最后20个…

MapRecuce 词频统计案例

文章目录初探MapReduce一、MapReduce核心思想二、MapReduce编程实例-词频统计思路1、map阶段(映射)2、reduce阶段(归并阶段)三、词频统计编程实现1、准备数据文件2、将文件上传到hdfs指定路径3、在java里创建词频统计映射器类4、创建词频统计驱动类5、运行词频统计驱动类&#…

【机器学习】SVM多分类问题及基于sklearn的Python代码实现

SVM多分类问题及Python代码实现1. 什么是SVM&#xff1f;2. SVM的分类3. SVM决策函数类型4. SVM多分类的Python代码实现参考资料1. 什么是SVM&#xff1f; 对于这个点已经介绍的非常多了&#xff0c;不管是西瓜书还是各种博客&#xff0c;就是需要找到一个超平面&#xff0c;用…

【Redis】Zset和Hash类型

Hash类型 Redis hash 是一个键值对集合。Redis hash是一个string类型的field和value的映射表&#xff0c;hash特别适合用于存储对象。 Hash 类型的底层数据结构是由压缩列表或哈希表实现的&#xff1a; 如果哈希类型元素小于512个&#xff0c;所有值的大小小于64字节。Redis…

一不小心手动实现了k8s的自动化构建

背景 由于公司需要对公司内部的软件需要对外部署&#xff0c;对于前端的部署&#xff0c;需要一套部署的方案。尝试了写了一个适配多模块可配置的部署脚本&#xff0c;本文对实现的过程进行一个记录。 目的 脚本采用的是node&#xff0c;前端同学的首选。脚本的目的就是实现k8s…

企业在ERP系统下的全面预算管理系统的实现

现代企业的发展离不开各种管理系统的建立和应用&#xff0c;针对于企业预算管理而言&#xff0c;全面的管理系统对于企业实现现代化管理有着较为深入的影响&#xff0c;ERP系统可以帮助企业更好的实现此项功能&#xff0c;本文就是在此背景下展开论述的。 编辑搜图 一、全面预算…

文件上传自动化测试方案

一、概述 【测试地址】&#xff1a;https://pan.baidu.com 【测试工具】selenium、requests 【脚本语言】Python 【运行环境】Windows 百度网盘作为文件存储及分享的平台&#xff0c;核心功能大部分是对文件的操作&#xff0c;如果要对它进行自动化测试&#xff0c;优先覆…

马克思主义基本原理笔记(黄色标记要求会背)

马克思主义基本组成部分 马克思主义哲学马克思主义政治经济学科学社会主义历史学、政治学、法学、文化学、新闻学、军事学等 唯物主义&#xff0c;唯心主义划分标准 唯物主义&#xff1a;把世界的本原归结为物质&#xff0c;主张物质是第一性&#xff0c;意识第二性&#xff0c…

Docker容器网络入门

1、查看默认网络模式 首先假定已经安装好docker了&#xff0c;不会安装的可以看我其他文章&#xff0c;很简单。docker安装好后默认是提供三种网络模式&#xff08;bridge、host、none&#xff09;&#xff0c;可以使用命令docker network ls查看网络状态 [rootlocalhost ~]#…

构建平衡二叉树(数据结构)

构建二又平衡树&#xff0c;插入的节点序列依次为:70 60 40 90 80 98 我们先了解一个构造规则 1、将每一个节点按照顺序依次使用 2、先将第一个节点画在图上&#xff0c;将第二个节点与第一个节点比较&#xff0c; &#xff08;1&#xff09;若比该节点大&#xff0c;第二个…

飞行员兄弟(蓝桥杯C/C++B组真题详解)

目录 题目链接&#xff1a;116. 飞行员兄弟 - AcWing题库​​​​​​ 题目思路&#xff1a; 代码详解&#xff1a; 题目链接&#xff1a;116. 飞行员兄弟 - AcWing题库​​​​​​ 题目思路&#xff1a; 1.我们可以知道 对于任意一个点 重复的按两次的话 回不改变原状…

ADI Blackfin DSP处理器-BF533的开发详解43:图像处理专题-ReverseColor (图像反色处理)(含源码)

硬件准备 ADSP-EDU-BF533&#xff1a;BF533开发板 AD-HP530ICE&#xff1a;ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 功能介绍 代码实现了图像反色处理&#xff0c;代码运行时&#xff0c;会通过文件系统打开工程文件根目下" …/ImageView"路径中的 tes…

Linux下局域网yum源配置

文章目录一 需求二 搭建环境准备三 服务端1 创建镜像存放目录与挂载目录2 上传centos7镜像3 对镜像文件进行挂载4 配置本地yum源5 对挂载点建立软链接6 安装http服务7 浏览器验证http服务是否正常启动四 客户端1 修改yum配置文件2 查看yum源一 需求 公司集群架构中&#xff0c…

【linux】之大数据基础平台实施及运维上

一、大数据介绍 学习目标 能够了解为什么使用大数据技术 能够了解大数据指的是什么 为什么使用大数据技术&#xff1f; 数据量越来越大 数据量越来越大数据分析的实时性越来越强数据结果的应用越来越广泛 结论&#xff1a;我们需要使用大数据技术 大数据的定义 大数据是收…

GC垃圾回收器

分代收集器 新生代回收器 Serial&#xff1a;复制算法 | 单线程 | 适合内存不大的场景 ParNew&#xff1a;复制算法 | 多线程 | Serial收集器多线程版本 Parallel Scavenge&#xff1a;复制算法 | 多线程 | 类ParNew&#xff0c;更关注吞吐量 老年代回收器 Serial Old&#xf…

postgresql文件结构

一、控制文件 pg_controldata $PGDATA 二、数据文件 pg中&#xff0c;每个索引、每个表都是一个单独的文件&#xff0c;pg中称为page&#xff08;也称为段&#xff09;,默认是每个大于1G的page会被分割。例如某个表有200g的大小&#xff0c;那么会被分割为200个文件存储 sel…

Gateway限流的使用

目录 1. 限流的使用场景 2. gateway限流实现 2.1 前提&#xff1a; 2.2 导入依赖包 2.3 在项目配置文件中配置redis​编辑 2.4 开发限流需要的Bean​编辑 2.5 为服务配置限流参数 2.6 压力测试 3. 熔断 3.1 熔断的使用场景 1. 限流的使用场景 为什么限流 限流就是限制…

web网页设计期末课程大作业 基于HTML+CSS+JavaScript制作八大菜系介绍舌尖上的美食5页

&#x1f380; 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

4、Metasploit系列----未知目标测试

靶机Metasploitable2&#xff1a;192.168.11.105 攻击机kail&#xff1a;192.168.11.106 一、创建工作空间 显示数据库未连接&#xff1a;使用msfdb init对数据进行初始化&#xff1a;db_status显示数据库已连接。使用命令workspace -a 192.168.11.105创建目标工作空间。二、信…

Spring Batch 批处理-作业参数校验

引言 接着上篇&#xff1a;Spring Batch 批处理-作业参数设置与获取&#xff0c;了解作业参数设置与获取后&#xff0c;本篇就来了解一下Spirng Batch 作业参数的校验。 作业参数校验 当外部传入的参数进入步骤处理时&#xff0c;我们需要确保参数符合期望。比如&#xff1a…