CloudCompare插件开发之点云如何创建、保存并显示?

news2024/12/28 11:18:38

文章目录

  • 0.引言
  • 1.创建插件工程
  • 2.代码编写
  • 3.显示点云
  • 4.保存点云

0.引言

  CloudCompaer是一款优秀的开源软件,在点云处理时可以根据实际要求开发合适的插件,在实际使用中,创建点云、保存点云、显示点云的操作较为基础,为了使这些操作得到总结,本文实现创建点云、保存并显示。

1.创建插件工程

  创建插件流程见:CloudCompare如何进行二次开发之插件开发?。
  本文创建的插件文件名:OperateData_1;
  CloudCompare中插件名:处理数据1。

2.代码编写

  在这里插入图片描述

// This is an example of an action's method called when the corresponding action
// is triggered (i.e. the corresponding icon or menu entry is clicked in CC's  
// main interface). You can access most of CC's components (database,  
// 3D views, console, etc.) via the 'm_app' variable (see the ccMainAppInterface  
// class in ccMainAppInterface.h).  
void OperateData_1::doAction()  
{  
    if (m_app == nullptr)  
    {  
        // m_app should have already been initialized by CC when plugin is loaded  
        Q_ASSERT(false);  
    return;  
    }  
    //创建点云  
    ccPointCloud* myPc = new ccPointCloud(QString("myPc"));  
    int pointCount = 10000;//设置创建10000个点  
    myPc->reserve(pointCount);  
    for (size_t i = 0; i < pointCount; i++)  
    {  
        float angle = (i % 360)*3.1415926 / 180;  
        float x = 100 * cos(angle);  
        float y = 100 * sin(angle);  
        float z = int(i / 360) * 1;  
        const CCVector3* vcc = new CCVector3(x, y, z);  
        myPc->addPoint(*vcc);  
    }  
    //保存点云  
    QString dirPath = QFileDialog::getExistingDirectory(nullptr, "please select a saving path");  
    if (dirPath.isEmpty()) {  
        m_app->dispToConsole("The user did not select a folder.");  
        return;  
    }  
    QString filename =  QString(myPc->getName());  
    QFile file(dirPath + "\\" + filename + ".txt");  
    if (!file.exists()) {  
        file.open(QIODevice::ReadWrite | QIODevice::Text);  
        file.close();  
    }  
    file.open(QIODevice::Text | QIODevice::Truncate | QIODevice::WriteOnly);  
    QTextStream out(&amp;file);  
    int precision = 3;  
    for (int i = 0; i<myPc->size(); i++) {  
        float x = myPc->getPoint(i)->x;  
        float y = myPc->getPoint(i)->y;  
        float z = myPc->getPoint(i)->z;  
        out << QString("%1,%2,%3").arg(x, 0, 'r', precision).arg(y, 0, 'r', precision).arg(z, 0, 'r', precision) << endl;  
    }  
    file.close();  
    //显示点云  
    std::vector<ccHObject*> allCloud;  
    allCloud.push_back(myPc);  
    ccHObject* CloudGroup = new ccHObject(QString("CloudGroup"));  
    for (size_t i = 0; i < allCloud.size(); i++)  
    {  
        CloudGroup->addChild(allCloud[i]);  
    }  
    m_app->addToDB(CloudGroup);  
    m_app->refreshAll();  
    m_app->updateUI();  
}

3.显示点云

  在这里插入图片描述

4.保存点云

  在这里插入图片描述

参考资料:
[1] fandq1223. 创建点云文件、加载点云文件; 2016-11-15 [accessed 2023-04-17].
[2] 渡航奥. C/C++库函数及函数大全; 2019-09-05 [accessed 2023-04-17].
[3] 小修勾. 《QT+PCL 第一章》点云文件保存; 2022-03-20 [accessed 2023-04-17].
[4] 萘和. cloudCompare插件开发——保存点云颜色; 2021-08-13 [accessed 2023-04-17].
[5] kingkee. 【Qt】QString 格式化参数; 2019-12-01 [accessed 2023-04-17].

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

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

相关文章

施工组织设计合集

34-6 施工组织设计02017-年亲曼旗大镇市政道路及广场公园园林绿化工程(第一.A1-1五中教学楼施工组织设计A2施工组织设计(方案) 报审表hasuploaded-中建施|组织设计 (22P)安徽大包庄125万吨疏铁矿斜坡道施工组织设计 (修改)宝山万科四季花城施T组织设计 (126P)对税信息培训中心装…

软件测试,月薪还没过万的进来看

目录 前言 一、技能提升 二、多语言掌握 三、团队协作 四、持续学习 五、提高测试效率 六、质量保障 七、职业发展 八、总结 前言 在当今IT行业中&#xff0c;软件测试是一个不可或缺的环节。随着互联网和移动应用的发展&#xff0c;对软件质量的要求也越来越高。因此…

前后端分离架构

前后端分离架构介绍 前后端分离已成为互联网项目开发的业界标准使用方式&#xff0c;将前端和后端的开发进行解耦。并且前后端分离会为以后的大型分布式架构、微服务架构、多端化服务&#xff08;各种客户端&#xff0c;比如浏览器、车载终端、安卓、IOS等&#xff09;打下坚实…

[Netty] FastThreadLocal (十四)

文章目录1.FastThreadLocal介绍2.FastThreadLocal分析3.FastThreadLocal结构分析4.FastThreadLocal方法分析4.1 FastThreadLocal.get()4.2 FastThreadLocal.set()1.FastThreadLocal介绍 FastThreadLocal是Netty中常用的一个工具类, FastThreadLocal所使用的InternalThreadLoca…

[架构之路-159]-《软考-系统分析师》-10-系统分析-6-现有业务流程分析, 系统分析最核心的任务

目录 第 10章 现有系统 分 析 1 0 . 6 现有业务流程分析 10.6.1 业务流程分析槪述 1 . 业务流程分析的步骤 2 . 业务流程分析的方法 10.6.2 业务-流程图TFD 1. T F D 的基本符号 2. TFD的绘制 10.6.3 业务 - 活动图 10.6.4 业务流程建模BPM 1. B P M 概述 2 . 标杆…

Pytest自动化测试框架一些常见的插件

Pytest拥有丰富的插件架构&#xff0c;超过800个以上的外部插件和活跃的社区&#xff0c;在PyPI项目中以“ pytest- *”为标识。 本篇将列举github标星超过两百的一些插件进行实战演示。 插件库地址&#xff1a;http://plugincompat.herokuapp.com/ 1、pytest-html&#xff1…

python机器学习决策树和SVM向量机算法实现红酒分类

1、红酒数据介绍 经典的红酒分类数据集是指UCI机器学习库中的Wine数据集。该数据集包含178个样本&#xff0c;每个样本有13个特征&#xff0c;可以用于分类任务。 具体每个字段的含义如下&#xff1a; alcohol&#xff1a;酒精含量百分比 malic_acid&#xff1a;苹果酸含量&a…

中科大ChatGPT学术镜像小白部署教程,全民都可以拥抱AI

docker…不会用…python不会用…服务器默认python版本3.6不会升级…代理也不会配置…各种命令不会用… 那么下面就是最简单办法&#xff0c;点点点即可【希望有帮助&#xff1f;】 文章目录一、体验镜像地址二、 基本配置2.1 config.py文件2.2 main.py文件三、下载项目四、项目…

FRP内网穿透配置

FRP内网穿透&#xff08;WIN&#xff09; 官方文档&#xff1a;点击进入 1.下载地址&#xff1a;点击进入 2.linux 压缩命令&#xff1a;tar -zxvf 包名&#xff0c;即可&#xff01; 3.linux配置服务端&#xff08;frps&#xff09; [common] bind_addr0.0.0.0 # frp监听的…

【NLP实战】基于Bert和双向LSTM的情感分类【下篇】

文章目录前言简介第一部分关于pytorch lightning保存模型的机制关于如何读取保存好的模型完善测试代码第二部分第一次训练出的模型的过拟合问题如何解决过拟合后记前言 本文涉及的代码全由博主自己完成&#xff0c;可以随意拿去做参考。如对代码有不懂的地方请联系博主。 博主…

TCP协议与UDP协议

1.TCP协议特点 1.1连接的建立与断开 TCP协议提供的是&#xff1a;面向连接、可靠的、字节流服务。使用TCP协议通信的双发必须先建立连接&#xff0c;然后才能开始数据的读写。双方都必须为该连接分配必要的内核资源&#xff0c;以管理连接的状态和连接上数据的传输。TCP连接是全…

从C语言到C++(第一章_C++入门_下篇)内联函数+auto关键字(C++11)+范围for +nullptr

目录 1. 内联函数 1.1 内联函数的概念 1.2 内联函数的特性 1.3 宏的优缺点和替代方法 2. auto关键字&#xff08;C11&#xff09; 2.1 改版前的auto 2.2 改版后的auto 2.3 auto 的使用场景 2.3.1处理很长的数据类型 2.3.2 auto 与指针结合起来使用&#xff1a; 2.4…

第2章 数据的类型

第2章 数据的类型 文章目录第2章 数据的类型2.2 为什么要进行区分2.3 结构化数据和非结构化数据案例&#xff1a;数据预处理字数/短语数特殊符号文本相对长度文本主题2.4 定量数据和定性数据2.4.1 案例&#xff1a;咖啡店数据2.4.2 案例&#xff1a;世界酒精消费量2.4.3 更深入…

4.18、TCP滑动窗口

4.18、TCP滑动窗口1.滑动窗口的介绍2.滑动窗口通信的例子1.滑动窗口的介绍 滑动窗口&#xff08;Sliding window&#xff09;是一种流量控制技术。早期的网络通信中&#xff0c;通信双方不会考虑网络的拥挤情况直接发送数据。由于大家不知道网络拥塞状况&#xff0c;同时发送数…

客户案例 | 迎接智能化浪潮,传统水厂数字化势在必行

关键发现 客户痛点&#xff1a;传统水厂业务离散&#xff0c;无法实现数据实时同步&#xff0c;为收集和分析处理数据并辅助决策带来障碍。需要智能化管理系统帮助水厂提升管理效率&#xff0c;优化管理流程&#xff0c;实现数字化、智能化的目标。 解决方案&#xff1a;天津腾…

你说你还不会Redis?别怕,今天带你搞定它!

Redis 前言 本文章是我学习过程中&#xff0c;不断总结而成&#xff0c;篇幅较长&#xff0c;可以根据选段阅读。 全篇17000字&#xff0c;图片 十三 张&#xff0c;预计用时1小时。 认识Redis 什么是Redis&#xff1f; 要使用一门技术&#xff0c;首先要知道这门技术是什…

pytorch进阶学习(三):在数据集数量不够时如何进行数据增强

对图片数据增强&#xff0c;可以对图片实现&#xff1a; 1. 尺寸放大缩小 2. 旋转&#xff08;任意角度&#xff0c;如45&#xff0c;90&#xff0c;180&#xff0c;270&#xff09; 3. 翻转&#xff08;水平翻转&#xff0c;垂直翻转&#xff09; 4. 明亮度改变&#xff08;变…

一零五五、mysql8.0高版本数据导入5.6低版本通解

背景 今日想将本机的mysql&#xff08;8.0&#xff09;中的数据库文件导出到远程服务器中的mysql&#xff08;5.6&#xff09;中&#xff0c;刚开始用source 一直报一大串ERROR&#xff0c;由于数据量比较大&#xff0c;那就直接用图形化工具导吧&#xff0c;连接上远程数据库&…

【常见CSS扫盲之渐变效果】好看的24种CSS渐变效果汇总(附源码)

【写在前面】web开发过程中&#xff0c;页面背景色想要一个渐变的效果很多时候网上一找全是官网那种很丑的色系&#xff0c;尤其是一些按钮和一些大背景色时候&#xff0c;不能搞得很yellow&#xff0c;今天我就做个工具人给大家罗列一些我在工作过程中总结的一些好看的渐变效果…

51单片机(8051系列)外部时钟

OUT&#xff08;输出引脚&#xff09;&#xff0c;IN&#xff08;输入引脚&#xff09;的区别 OUT(输出引脚) 输入引脚连接输入设备IN(输入引脚) 输出引脚连接输出设备外部时钟和内部时钟的区别 1、XTAL1和XTAL2引脚 内部时钟方式&#xff1a;必须在XTAL1和XTAL2引脚两端跨…