点云平台之CloudCompare开发

现在博客终于又要开始更新了,告别了靠想象搞科研的日子,所以现在的我显得还是比较无拘无束,在我学习生涯前2年这段备受煎熬与折磨的日子里,在当年那个环境我是不会这么去表达自己内心想法的(估计绝大部分人都不会),身边的例子让我更加坚信了,要做一只默默无闻的羔羊,也很庆幸这段经历并没有伴随着我学习生活的始终,在恩师的学成归来后这一切都提前结束了,在接下来的日子里我还是体会到了什么是科研,所以也算是没白来这一遭,唯一遗憾的只是这一切来的晚了点。同时我还是特别希望我的遭遇只是一个意外(最好是我想多了,其他人都过得挺好!),回忆往昔倍感个人选择以及自我驱动的重要性,在前者问题的处理上屡次碰壁,但是一直支撑着自己的自我驱动精神努力的让自己保持对技术知识的高度认可,上周对北京某公司的电力巡线软件进行了操作,接着就动手在自己的平台上对该软件的实现过程进行了简单的预演,毕竟是预演,我的平台也不会拿出来卖钱,关键也没人会买,所以做了个大概就草草收工,只是把自己之前的一些东西直接在电力巡线上来运用一下而已;

接着让尘封了4个月之久的cloudcompare源码重新开启,一直百度搜索怎样开发,逛遍整个网页貌似有价值的寥寥无几,不过已经习惯了,毕竟我是百度搜索不是google,天天各种技术交流群,一直等着天上掉馅饼,最后当然不会掉了。所以还是得老老实实的直接上源码,一个下午加一个晚上,通过几个例子的调试,貌似找到了传说中的“葫芦”,所以接着画瓢,一下还真成功了!一旦成功之门被开启,马上把开启我点云之路的PCL库塞了进去,接着就可以畅游了,之前开通了博客,但是对于曾经那个只能夹着尾巴做人的我来说没有任何作用,所以很快就被我遗忘了,这几天准备重新开一下博客,把这些并没有什么核心竞争力的知识共享给大家,毕竟能为初学者迈入cc开发的大门提供一点帮助。

(a)软件启动界面

这是实验室当年小伙伴们一起开心探讨科研的场景,每次启动软件,都会激发我要为科研奋斗终身的激情,不知道他们是不是在做科研,毕竟当时我并不在电脑前面,就当是吧,不然我又开始怀疑人生了。

(b)汉化版CloudCompare

每次寻找一个功能,我都得默默的打开百度翻译,曾经浪费了不少时间,故此,在一个彻夜无眠的晚上痛下决心,将其改成了汉化版的,同时说明一下,我确实在cc的源码上做的一些小的改动,由于平时喜欢黑灰色色调,所以大胆了将平台的风格做了修改。

(c) 案例分析之提取地面点

最后给大家粘贴上一段核心代码,其实也没什么复杂的,本人非计算机专业的,真正学c++时间也不到半年,都能照葫芦画瓢,大神们一定不再话下,相信聪明的你将很快会进入状态!

//获取cc的点云对象
    ccHObject::Container selectedEntities = m_selectedEntities; // 当前所选择的点云对象
    //为了访问点云里的文件---自己加的的一段测试代码
    size_t selNum = selectedEntities.size();
    if (selNum != 1)
    {
        /*    m_app->dispToConsole("Please select two cloud!", ccMainAppInterface::ERR_CONSOLE_MESSAGE);*/
        return;
    }
    ccHObject* ent = selectedEntities[0];
    assert(ent);
    ccPointCloud* m_cloud = static_cast<ccPointCloud*>(ent);
    pcl::PointCloud<pcl::PointXYZ>::Ptr clouds(new pcl::PointCloud<pcl::PointXYZ>);
    CCcloudToPCLcloud(m_cloud,clouds);

    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_ground(new pcl::PointCloud<pcl::PointXYZ>);
    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_ground_remove(new pcl::PointCloud<pcl::PointXYZ>);
    pcl::PointIndicesPtr ground(new pcl::PointIndices);

    // 创建形态学滤波器对象
    pcl::ProgressiveMorphologicalFilter<pcl::PointXYZ> pmf;
    pmf.setInputCloud(clouds);

    // 设置过滤点最大的窗口尺寸
    pmf.setMaxWindowSize(10);

    // 设置计算高度阈值的斜率值--就是坡度
    pmf.setSlope(1.0f);

    // 设置初始高度参数被认为是地面点
    pmf.setInitialDistance(0.5f);

    // 设置被认为是地面点的最大高度
    pmf.setMaxDistance(3.0f);
    pmf.extract(ground->indices);

    // Create the filtering object
    pcl::ExtractIndices<pcl::PointXYZ> extract;
    extract.setInputCloud(clouds);
    extract.setIndices(ground);
    extract.filter(*cloud_ground);

    // 提取非地面点
    extract.setNegative(true);
    extract.filter(*cloud_ground_remove);

    //-------接下来给他们更新到dbtree里面

    //1。需要对pcl的cloud转换成cc的
    ccPointCloud *cloudGround = new ccPointCloud();
    ccPointCloud *cloudNoGround = new ccPointCloud();

    PCLcloudToCCcloud(cloud_ground, cloudGround);
    PCLcloudToCCcloud(cloud_ground_remove, cloudNoGround);

    //设置颜色区分一下
    cloudGround->setRGBColor(255,0,0);
    cloudGround->showColors(true);//显示颜色
    cloudGround->setPointSize(2);

    cloudNoGround->setRGBColor(0, 255, 0);
    cloudNoGround->showColors(true);
    cloudNoGround->setPointSize(3);

    m_cloud->setEnabled(false);

    //添加新的一组DB实体
    ccHObject* cloudContainer = new ccHObject(m_cloud->getName() + QString::fromLocal8Bit("分割场景-地面点"));//父目录
    //设置新点云并添加到实体
    cloudGround->setVisible(true);
    cloudGround->setName(QString::fromLocal8Bit("zx的地面点!"));//子目录
    cloudContainer->addChild(cloudGround);
    //添加实体到DB树
    addToDB(cloudContainer);

    //添加新的一组DB实体
    ccHObject* cloudContainer1 = new ccHObject(m_cloud->getName() + QString::fromLocal8Bit("分割场景-非地面点"));//父目录
    //设置新点云并添加到实体
    cloudNoGround->setVisible(true);
    cloudNoGround->setName(QString::fromLocal8Bit("zx的非地面点!"));//子目录
    cloudContainer1->addChild(cloudNoGround);
    //添加实体到DB树
    addToDB(cloudContainer1);

    //刷新
    refreshAll();

    QMessageBox::about(this, QString::fromLocal8Bit("成功"), QString::fromLocal8Bit("这是莫某的开发"));
    return;

原文地址:https://www.cnblogs.com/z-web-2017/p/9688564.html

时间: 2024-10-15 04:42:08

点云平台之CloudCompare开发的相关文章

Web开发从零单排之一:在新浪云平台SAE上开发一个html5电子喜帖

需求描述: 本人大婚将至,女朋友说“现在都流行在微信上发电子请帖了,你不是技(cheng)术(xu)宅(yuan)嘛,不会连这个都搞不定吧” 本人嘴上说这等小事何足挂齿,但心里还是七上八下的,虽然自认为几年开发经验在工作上还算得心应手,但也因为工作项目局限,对Web开发特别是前端和建站技术接触不多 于是打开搜索引擎和女朋友一起看看现在市面上的服务,基本上都是给出一套模板,自己填上内容和照片后,生成电子请帖,而形式有网页也有单张图片的 收费也不贵,都在百元左右.但收费是小,面子是大啊,作为一个软件

基于氚云平台的应用开发学习(三)

这篇将继续围绕上篇所说的第二种方法,记录说明一下自己遇到的问题以及解决方法. 一.创建或更新包含子表的表单 二.流程事件变化后执行某些逻辑 一.创建或更新包含子表的表单 1.首先介绍关于在后端创建包含子表的表单: 1 //根据ID查询当前表单数据 2 string sql1 = "select Warehouse1 as Warehouse1,MyProject as MyProject,Class1 as Class1,People as People,Dept as Dept,"

云平台项目-----总结

2015年4月份至今,我开始参与公司云平台设计与开发,为了巩固知识点,整理一些项目中用到的技术,以下是简要的介绍: 项目要求及特点:    高可用,高并发,多线程,大数据量,多节点 开发语言:            java 设计工具:            VISIO,EA,WORD =========中间件========== Karaf              osgi容器,bundle可插拔,模块化开发 ActiveMq         消息队列中间件 Dubbo          

史上最强国内云平台大搜罗

随着云计算技术的普及,云平台在软件开发工作方面承担起了越来越重要的作用.它帮助企业降低IT成本,让很多小微型企业更专注业务,同时,它也慢慢改变了我们的工作与生活.然而,在如今这个凡事都讲求"免费"的时代,国内的云平台又有哪些服务是免费的呢?就我个人而言,我这几年也用过国内不少家的产品,就让我来说一说,点评一下吧. 1.阿里云 性价比不错,产品种类也很多.环境可以自己配置也可以直接选择配置好的,非常方便.在收了万网之后,备案特别方便快捷,但有网友反映其防dns攻击方面有点弱,会解析不了直

网络架构、云平台和微信公众平台开发接入

版权声明:本文为博主原创文章,未经博主允许不得转载. 云与后端相关的技术似乎并不属于嵌入式和物联智能硬件开发工程师的范畴,但是嵌入式开发工程师有必要认识成熟的网络架构和相关的云技术,以拓展自己在系统架构方面的视野.大数据分析是物联网背后的核心价值,物联智能硬件是物联大系统的终端,开发工程师不仅要深入精通物联技术,也应该去理解大系统,甚至整个生态领域的相关技术. 作为嵌入式开发工程师,也许并不需要熟悉云和后端的技术开发,但至少要对其中用到的技术和接口有一定的认识. 一.网络架构 常见的网络架构分为

手机归属地查询(云平台开发)

概要 本章主要简示了使用聚合云API获取指定手机号的归属地信息,这次找了个可以免费查询很多次的平台.开发主要根据聚合的官方文档,由于获取的查询结果是Json格式,所以涉及到了Json解析,但现在的IOS开发内置了Json解析库,所以事情就简单多了. 结果展示 流程概要 1.在聚合云平台上注册账号并创建应用,下载对应的SDK 2.查看SDK文档,根据文档描述创建应用添加头文件.库.框架,官当文档描述如下: 将JuheApisSDK.a以及头文件"include"文件夹添加到自己的工程中来

PHP+新浪微博开放平台+新浪云平台(SAE)开发微博应用基础

1.新浪微博开放平台(http://open.weibo.com/wiki/index.php/Quickstart)        开放的是什么:开放平台开放给开发者的是每一个用户的用户关系,开发者不在向传统应用那样面对单个开发者而是面对用户身后的整个好友圈.每一个API都是围绕好友与好友之间的交流来提供相关的功能,如发送微博,查看好友资料等等.        为什么要使用开放平台?开放平台可以加快应用的推广.每个用户可以影响到周围的好友,一旦应用真的优秀,用户可以方便的推荐给好友,好友又可以

国内物联网平台初探(七):Ablecloud物联网自助开发和大数据云平台

国内物联网平台初探(七)——Ablecloud物联网自助开发和大数据云平台 马智 平台定位 面向IoT硬件厂商,提供设备联网与管理.远程查看控制.定制化云端功能开发.海量硬件数据存储与分析等基础设施,加速硬件实现联网智能化. 架构 服务 云端服务一体化开发引擎 业内独创一体化开发引擎架构,自动解决底层连接.存储.分布式集群部署.弹性扩容.安全等难题,降低IoT云端功能开发门槛,普通工程师即可快速完成云端服务开发部署,加速IoT功能创新迭代. IoT功能组件及方案超市 提供丰富的IoT功能组件及方

PaaS的发展将释放物联网开发效率 ——基于云架构的物联网云平台解决方案

2018年7月6日.7日,为期两天的 ArchSummit 全球架构师峰会在深圳·华侨城洲际酒店拉开帷幕.在7月6日解决方案专场活动上,BoCloud博云CTO李亚琼博士带来了<物联网多路数据处理基础上的云平台架构设计实践>,本次分享以物联网+云的技术挑战为切入点,通过实际案例讲解多路数据聚合架构的设计要点,以及云.互联网架构在物联网系统中的应用. IOT时代,云计算是物联网的核心 物联网,Internet of things(即 IoT ),是新一代信息技术的重要组成部分,也是"信