当前位置: 首页 > news >正文

CloudCompare——点云空间圆拟合

目录

  • 1.概述
  • 2.软件实现
  • 3.完整操作
  • 4.算法源码
  • 5.相关代码

在这里插入图片描述

本文由CSDN点云侠原创,CloudCompare——点云空间圆拟合,爬虫自重。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT生成的文章。

1.概述

   CloudCompare软件中的'Tools——>Fit——>Circle功能可以实现点云的空间圆拟合。

2.软件实现

1. 首先选中点云
在这里插入图片描述

2. 拟合功能
在这里插入图片描述

3. 拟合结果
白色的线为拟合出来的空间圆模型
在这里插入图片描述

4. 拟合参数
在这里插入图片描述

5. 修改拟合圆的颜色
选中拟合的空间圆模型使用Edit中的Colors功能即可对拟合结果进行颜色修改。
在这里插入图片描述

3.完整操作

在这里插入图片描述

4.算法源码

void MainWindow::doActionFitCircle()
{ccProgressDialog pDlg(true, this);pDlg.setAutoClose(false);for (ccHObject* entity : getSelectedEntities()){ccPointCloud* cloud = ccHObjectCaster::ToPointCloud(entity);if (!cloud)continue;CCVector3 center;CCVector3 normal;PointCoordinateType radius = 0;double rms = std::numeric_limits<double>::quiet_NaN();if (CCCoreLib::GeometricalAnalysisTools::DetectCircle(	cloud,center,normal,radius,rms,&pDlg) != CCCoreLib::GeometricalAnalysisTools::NoError){ccLog::Warning(tr("[Fit circle] Failed to fit a circle on cloud '%1'").arg(cloud->getName()));continue;}ccLog::Print(tr("[Fit circle] Cloud '%1': center (%2,%3,%4) - radius = %5 [RMS = %6]").arg(cloud->getName()).arg(center.x).arg(center.y).arg(center.z).arg(radius).arg(rms));ccLog::Print(tr("[Fit circle] Normal (%1,%2,%3)").arg(normal.x).arg(normal.y).arg(normal.z));// create the circle representation as a polylineccPolyline* circle = ccPolyline::Circle(CCVector3(0, 0, 0), radius, 128);if (circle){circle->setName(QObject::tr("Circle r=%1").arg(radius));cloud->addChild(circle);circle->prepareDisplayForRefresh();circle->copyGlobalShiftAndScale(*cloud);circle->setMetaData("RMS", rms);ccGLMatrix trans = ccGLMatrix::FromToRotation(CCVector3(0, 0, 1), normal);trans.setTranslation(center);circle->applyGLTransformation_recursive(&trans);addToDB(circle, false, false, false);}}refreshAll();
}

5.相关代码

  • PCL RANSAC拟合空间圆
  • PCL RANSAC分割提取多个空间圆
  • Open3D——RANSAC拟合空间圆
  • Open3D 进阶(20)附有限制条件的间接平差拟合空间圆
http://www.lryc.cn/news/279330.html

相关文章:

  • 解决POI报错POIXMLTypeLoader不存在的问题
  • 关于rewriteBatchedStatements的源码分析
  • 自动化神器 Playwright 的 Web 自动化测试解决方案
  • docker filebeat 将日志多级目录和多维json数据日志同步到es
  • 【机器学习】模型参数优化工具:Optuna使用分步指南(附XGB/LGBM调优代码)
  • webview全屏处理,即插即用
  • 实录分享 | 央企大数据平台架构发展趋势与应用场景的介绍
  • UE5 将类修改目录
  • GPT实战系列-ChatGLM3管理工具的API接口
  • Python 列表、元组、字典区别
  • [足式机器人]Part2 Dr. CAN学习笔记 - Ch03 傅里叶级数与变换
  • 你想使用域名访问一个ip的网页,你应该怎么办呢?
  • SAP存放状态的几个常用表
  • AUTO SEG-LOSS SEARCHING METRIC SURROGATES FOR SEMANTIC SEGMENTATION
  • openssl3.2 - 官方demo学习 - 索引贴
  • textarea文本框根据输入内容自动适应高度
  • 【JAVA基础--计算机网络】--TCP三次握手+四次挥手
  • 最新靠谱可用的-Mac-环境下-FFmpeg-环境搭建
  • 【漏洞复现】Hikvision SPON IP网络对讲广播系统存在命令执行漏洞CVE-2023-6895
  • 微软为Windows内置记事本应用开发AI功能;2024年15个 AI 语音生成器
  • 【C++进阶06】红黑树图文详解及C++模拟实现红黑树
  • 2023年最严重的10起0Day漏洞攻击事件
  • Linux之Iptables简易应用
  • 树状结构查询 - 华为OD统一考试
  • 版本控制系统教程
  • Java多线程并发篇----第十篇
  • 模型\视图一般步骤:为什么经常要用“选择模型”QItemSelectionModel?
  • C#,愚弄数(Hoax Number)的计算方法与源代码
  • c JPEG编码,此程序没有处现MCU中亮度分量的排序
  • 前端规范扩展