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

pcl完成halcon3d中的下采样(按对角个数)

注:这个斯坦福兔子的ply文件,在之前有分享过

这里直接上代码,必要的注释都在代码里

#include<iostream>
#include<pcl/pcl_config.h>
#include <pcl/io/ply_io.h>
#include <pcl/point_types.h>
#include <pcl/visualization/cloud_viewer.h>
#include<pcl/filters/voxel_grid.h>
#include<pcl/common/common.h>
using namespace std;int main(int argc, char* argv) {// 读取带法线的点云pcl::PointCloud<pcl::PointNormal>::Ptr cloud_with_normals(new pcl::PointCloud<pcl::PointNormal>);//std::string file_name  = "C : \\Users\\Administrator\\Desktop\\pcl_learning\\点云库PCL从入门到精通\\第三章\\6\\source\\test.ply";std::string file_name = "C:\\Users\\Administrator\\Desktop\\pcl_learning\\001.ply";pcl::io::loadPLYFile<pcl::PointNormal>(file_name, *cloud_with_normals);cout << cloud_with_normals->points.size() << endl;//对点云对角线方向采样20个点的体素降采样,去掉没有值或者说xyz超极限约束的点//不去的话偶尔会算超限std::vector<int> indexs0;pcl::removeNaNFromPointCloud(*cloud_with_normals,*cloud_with_normals, indexs0);cout << cloud_with_normals->points.size() << endl;pcl::PointNormal min_p, max_p;pcl::getMinMax3D<pcl::PointNormal>(*cloud_with_normals,min_p,max_p);//求对角线长度float D = sqrt((max_p.z - min_p.z) * (max_p.z - min_p.z) + (max_p.x - min_p.x) * (max_p.x - min_p.x) + (max_p.y - min_p.y) * (max_p.y - min_p.y));cout << "对角长度是:" << D << endl;float leaf_size = D/ 20.0;cout << leaf_size << endl;pcl::VoxelGrid<pcl::PointNormal> v;pcl::PointCloud<pcl::PointNormal>::Ptr cloud_filter(new pcl::PointCloud<pcl::PointNormal>);v.setInputCloud(cloud_with_normals);v.setLeafSize(leaf_size, leaf_size, leaf_size);v.filter(*cloud_filter);cout << cloud_filter->points.size() << endl;// 创建可视化窗口pcl::visualization::PCLVisualizer::Ptr viewer(new pcl::visualization::PCLVisualizer("点云法线可视化"));viewer->setBackgroundColor(0, 0, 0); // 黑色背景viewer->addPointCloudNormals<pcl::PointNormal>(cloud_filter, 1, 2, "normals");// 可以设置法线颜色(RGB值范围0-1)viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_COLOR, 1, 0.5, 0, "normals"); // 红色法线// 启动可视化循环while (!viewer->wasStopped()) {viewer->spinOnce(100);}return 0;}

http://www.dtcms.com/a/326224.html

相关文章:

  • 网络资源模板--基于Android Studio 实现的手绘板App
  • DNS(域名系统)详解与 BIND 服务搭建
  • C# 异步编程(BeginInvoke和EndInvoke)
  • 【Java后端】Quartz任务调度核心机制详解:从基础编排到动态控制
  • Qwen 3 架构深度解析:混合推理、MoE创新与开源生态的全面突破
  • CSPOJ:1561: 【提高】买木头
  • 智能小e-智能办公文档
  • OCAD for Orienteering 20Crack 定向越野:工作流程
  • Chrome插件开发【Service Worker练手小项目】
  • MySQL 运算符
  • [CSP-J 2021] 小熊的果篮
  • Oracle数据库Library cache lock阻塞问题排查
  • 银河麒麟V10配置KVM的Ubuntu虚机GPU直通实战
  • AI测试平台实战:深入解析自动化评分和多模型对比评测
  • 人工智能-python-机器学习-逻辑回归与K-Means算法:理论与应用
  • 机器学习之DBSCAN
  • Redis中的AOF原理详解
  • 【unity实战】在Unity中实现不规则模型的网格建造系统(附项目源码)
  • CI/CD的持续集成和持续交付
  • 变频器实习DAY26 CDN 测试中心使用方法
  • 标准IO详解(fgets、gets、fread、fwrite、fseek 等应用)
  • ubuntu24.04设置登陆背景图片
  • 【openEuler构建测试环境或部署嵌入式系统】openEuler生态扩容新路径:内网穿透工具cpolar助力多场景落地
  • 服务器使用ADB调试手机
  • Redis 数据结构及特点
  • 计算机网络(一)——TCP
  • JavaScript Const的基础使用
  • QML的中英文翻译
  • 快速搭建前端playwright工程
  • SpringAI实现Reread(Advisor)