PCL 移动立方体重建(HOPPE)

目录

  • 一、概述
  • 二、代码
  • 三、结果

一、概述

  PCL中的 pcl::MarchingCubes<pcl::PointXYZRGBNormal>:函数实现移动立方体重建的代码示例。

二、代码

#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/io/ply_io.h>
#include <pcl/point_types.h>
#include <pcl/features/normal_3d.h>
#include <pcl/kdtree/kdtree_flann.h>
#include <pcl/surface/marching_cubes_HOPPE.h>
#include <pcl/visualization/pcl_visualizer.h>
#include <boost/thread/thread.hpp>// 可视化点云和mesh模型
void PointCloudandMeshViewer(pcl::PointCloud<pcl::PointXYZRGB>::Ptr& cloud, pcl::PolygonMesh& triangles)
{// 输出结果到可视化窗口boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer(new pcl::visualization::PCLVisualizer("3D PointCloud Viewer"));// 设置视口1,显示原始点云int v1;viewer->createViewPort(0.0, 0.0, 0.5, 1.0, v1);  // 左侧窗口viewer->setBackgroundColor(0.0, 0.0, 0.0, v1);  // 黑色背景viewer->addText("Original PointCloud", 10, 10, "vp1_text", v1);  // 标题pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZRGB> cloud_color_handler(cloud, 0, 255, 0);  // 绿色viewer->addPointCloud(cloud, cloud_color_handler, "original_cloud", v1);// 设置视口2,显示重建点云int v2;viewer->createViewPort(0.5, 0.0, 1.0, 1.0, v2);  // 右侧窗口viewer->setBackgroundColor(1.0, 1.0, 1.0, v2);   // 白色背景viewer->addText("mesh", 10, 10, "vp2_text", v2);viewer->addPolygonMesh(triangles, "triangles", v2);viewer->setRepresentationToWireframeForAllActors(); // 网格模型以线框图模式显示// 添加坐标系/* viewer->addCoordinateSystem(0.1);viewer->initCameraParameters();*/// 可视化循环while (!viewer->wasStopped()){viewer->spinOnce(100);}}int main()
{// 读取点云数据pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZRGB>);if (pcl::io::loadPCDFile("lamp.pcd", *cloud)){PCL_ERROR("Couldn't read the PCD files!\n");return -1;}// 计算法线pcl::NormalEstimation<pcl::PointXYZRGB, pcl::Normal> n;pcl::search::KdTree<pcl::PointXYZRGB>::Ptr tree(new pcl::search::KdTree<pcl::PointXYZRGB>);n.setInputCloud(cloud);n.setSearchMethod(tree);n.setKSearch(20);    // k邻域搜索范围pcl::PointCloud<pcl::Normal>::Ptr normals(new pcl::PointCloud<pcl::Normal>);n.compute(*normals);// 连接点坐标及法向量pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr cloudNormals(new pcl::PointCloud<pcl::PointXYZRGBNormal>);         pcl::concatenateFields(*cloud, *normals, *cloudNormals);// HOPPE移动立方体重建pcl::MarchingCubes<pcl::PointXYZRGBNormal>::Ptr hp(new pcl::MarchingCubesHoppe<pcl::PointXYZRGBNormal>);pcl::search::KdTree<pcl::PointXYZRGBNormal>::Ptr tree1(new pcl::search::KdTree<pcl::PointXYZRGBNormal>);tree1->setInputCloud(cloudNormals);hp->setInputCloud(cloudNormals);hp->setIsoLevel(0.0f);			   // 等值面的iso_levelhp->setGridResolution(50, 50, 50); // 移动立方体网格分辨率hp->setPercentageExtendGrid(0.0f); // 定义在点云的边框和网格限制之间的网格内应该保留多少自由空间,不影响网格的分辨率,只是相应地改变体素大小。pcl::PolygonMesh triangles;        // 存储最终三角化的网格模型hp->reconstruct(triangles);pcl::io::savePLYFile("lamp.ply", triangles);// 输出可视化结果到渲染窗口PointCloudandMeshViewer(cloud, triangles);return (0);
}

三、结果

在这里插入图片描述

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

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

相关文章

生成-理解大一统:一文浅谈多模态大模型最新研究进展

在过去几年中&#xff0c;多模态智能的两个关键支柱——理解和生成&#xff0c;取得了显著进展。多模态大型语言模型&#xff08;MLLMs&#xff09;&#xff0c;如 LLaVA&#xff0c;在视觉语言任务&#xff08;例如视觉问答&#xff09;中表现出色。同时&#xff0c;去噪扩散概…

转行AI产品经理前真后悔没看到这篇…

最近AI行业发展势头正盛&#xff0c;很多人私信我说都来问我AI产品经理转行的事&#xff0c;希望我能给一些意见 文科生能不能做产品经理&#xff0c;大家对这些是一头雾水&#xff0c;也不知道AI产品经理具体都做些什么&#xff0c;又要具备那些能力 因为在不同的业务发展不一…

领夹麦克风性价比最高?一文看懂领夹麦克风什么牌子的好

近几年随着网络直播、短视频等新兴行业的发展&#xff0c;筑就了一个全民视频创作的时代。而领夹麦克风也是凭借轻便、便携的特性&#xff0c;获得了广大短视频创作者的青睐&#xff0c;领夹麦克风的需求量也是不断增加。也正是因为如此&#xff0c;如今市面上的领夹麦克风品牌…

一文上手SpringSecurity【八】

RBAC&#xff08;Role-Based Access Control&#xff09;&#xff0c;基于角色的访问控制。通过用户关联角色&#xff0c;角色关联权限&#xff0c;来间接的为用户赋予权限。 一、RBAC介绍 RBAC&#xff08;Role-Based Access Control&#xff09;&#xff0c;即基于角色的访…

企业微信:客户联系自带群发工具和聊天工具

前言 上篇博客介绍了一些客户联系的开启和配置&#xff0c;接下来我们来使用客户联系自带群发工具和聊天工具。 突然发现官方的文档已经很详细了&#xff0c;我这里给出一些简单的描述&#xff1a; 企业微信如何使用群发助手&#xff1f;-帮助中心-企业微信 群发工具 群发消息给…

Python 中的lambda函数表达式

lambda x:xn 这是一个 Python 中的lambda函数表达式。它定义了一个匿名函数&#xff0c;该函数接受一个参数x&#xff0c;并返回xn的值。再定义常数n。 n 5 my_function lambda x: x n print(my_function(3)) 运行结果&#xff1a; 在上述代码中&#xff0c;首先定义了…

win10专业版永久关闭自动更新功能

如何关闭 Windows 10 自动更新 Windows 10 默认情况下会自动安装更新&#xff0c;这可能会导致系统不稳定或问题。如果您想关闭自动更新&#xff0c;可以使用以下方法&#xff1a; 方法 1&#xff1a;使用设置应用程序 打开“设置”应用程序。转到“更新和安全”。在“Windo…

获取本函数所在代码域内的所有局部变量和值以字典形式返回locals()

【小白从小学Python、C、Java】 【考研初试复试毕业设计】 【Python基础AI数据分析】 获取本函数所在代码域内的 所有局部变量和值 以字典形式返回 locals() 选择题 关于以下代码输出的结果说法正确的是&#xff1f; a 10 def x(): b 20 print(locals()) print("【执行…

TTT大语言模型架构发布,成功撼动了Transformer与Mamba模型

上期图文&#xff0c;我们刚介绍了 transformer 模型与 Mamba 模型&#xff0c;觉得 Mamba 模型的发布可以有效改善 transformer 模型长序列输入复杂度的问题&#xff0c;应该能够成为下一个大语言模型的基石。谁想Mamba2 还没有发布几天&#xff0c;这边最新的大语言模型TTT模…

隆道携手黑龙江省中小企业协会助力区域企业数字化转型

9月28日&#xff0c;隆道公司总裁吴树贵出席“2024年黑龙江省中小企业协会副会长扩大会议暨数字化转型专题报告会”并做主题发言&#xff0c;分享了龙江惠企商城建设情况和供应链数字化转型实践经验。会上&#xff0c;隆道公司与黑龙江省中小企业协会签订了战略合作协议&#x…

【Kubernetes知识点】 解读 Service 和 EndpointSlice 之间的关系

【Kubernetes知识点】 解读 Service 和 EndpointSlice 之间的关系 目录 1 概念 1.1 Service的概念1.2 Endpoint 的概念1.3 EndpointSlice 的引入 1.3.1 EndpointSlice支持的地址1.3.2 EndpointSlice的状态1.3.3 EndpointSlice的拓扑信息 1.4 Service 、Endpoint和 EndpointSl…

自动驾驶TPM技术杂谈 ———— 高精度地图

文章目录 概述高精度地图分层架构价值体现 关键技术道路元素图像处理激光点云处理点云特征提取点云法向量点云配准点云分割 同步定位与地图构建高精度地图云端服务体系 解决方案高精度地图采集数据模型 高精度地图制作和编译数据处理编译及格式规范NDSOpenDRIVE 高精度地图质量…

入职2年的程序员,被劝退了!年纪大了,感觉好绝望!

入职2年的程序员&#xff0c;今天被劝退了&#xff01;年纪大了&#xff0c;感觉好绝望&#xff01; 我的朋友是一位程序员&#xff0c;毕业后去了BAT企业&#xff0c;前2年去了一家国企&#xff0c;至今刚满2年&#xff0c;刚进去绩效领导给打了C&#xff0c;现在被边缘化&…

可视化是工业互联网的核心技术之一,都有哪些应用场景?

一、工业互联网是什么&#xff0c;发展的来胧去脉 工业互联网是指利用互联网技术和物联网技术&#xff0c;将工业生产中的各种设备、机器、传感器等进行互联互通&#xff0c;实现信息的实时采集、传输和分析&#xff0c;从而实现生产过程的智能化、自动化和高效化。 工业互联网…

echarts实现3D柱状图(视觉层面)根据博主改编

https://blog.csdn.net/weixin_57798646/article/details/131067725 这是原贴 在这个基础上我需要实现 一根柱子 代码如下 <!DOCTYPE html> <html lang"en" style"height: 100%"><head><meta charset"utf8"> </hea…

Python画笔案例-069 绘制调皮田彩格

1、绘制调皮田彩格 通过 python 的turtle 库绘制 调皮田彩格,如下图: 2、实现代码 绘制 调皮田彩格,以下为实现代码: """调皮田彩格.py本程序需要coloradd模块支持,安装方法:pip install coloradd =""" import turtle from coloradd import…

AIGC实践|AI助力文旅短视频创作全流程

前言&#xff1a; 受到央视《AI我中华》及各地文旅AI宣传片的启发&#xff0c;本次我将尝试使用AI辅助进行城市宣传片的创作探索。我将尽可能详细的展示使用AI辅助创作城市宣传片的全过程&#xff0c;从灵感捕捉到最终成品呈现。现在&#xff0c;让我们一同踏上这段充满创意的探…

工作日志:el-table在无数据情况下,出现横向滚动条。

1、遇到一个警告。 原因&#xff1a;中的组件不能呈现动画的非元素根节点。 也就是说&#xff0c;Transition包裹的必须是一个单根的组件。 2、el-table在无数据情况下&#xff0c;出现横向滚动条&#xff0c;大概跟边框的设置有关系。 开始排查。 给.el-scrollbar加了一个…

ChatGPT+R语言强强联合,数据分析不再难!回归与混合效应模型、多元统计分析、结构方程模型(SEM)(lavaan)、Meta分析、贝叶斯回归等应用

目录 第一章 生态环境数据统计概述及基础 第二章 GPT&R&#xff1a;回归与混合效应模型 第三章 GPT&R&#xff1a;多元统计分析 第四章 GPT&R&#xff1a;结构方程模型&#xff08;SEM&#xff09;&#xff08;lavaan&#xff09; 第五章 GPT&R&#xff1…

C++ STL容器(四) —— vector底层剖析

这篇讲解vector&#xff0c;不说废话&#xff0c;直接开始&#xff01; 文章目录 原理UML类图代码实现构造函数插入元素删除元素清空容器析构函数赋值运算符 案例分析 原理 这里简单说一下 vector 的大致思想&#xff0c;动态数组&#xff0c;即它的长度会随着我们插入元素而产…