AGAST角点检测

一、AGAST角点检测

C++

#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/common/io.h>
#include <pcl/visualization/pcl_visualizer.h>
#include <boost/thread/thread.hpp>
#include <pcl/visualization/cloud_viewer.h>
#include <pcl/common/common_headers.h>
#include <pcl/keypoints/agast_2d.h>
#include <pcl/keypoints/keypoint.h>
#include <pcl/point_cloud.h>
#include <pcl/filters/filter.h>using namespace pcl;
using namespace std;int main(int, char** argv)
{pcl::PointCloud<pcl::PointXYZRGBA>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZRGBA>);//要配准变化的点云if (pcl::io::loadPCDFile<pcl::PointXYZRGBA>("pcd/6_00003.pcd", *cloud) == -1){PCL_ERROR("加载点云失败\n");}std::vector<int> indices; //保存去除的点的索引,一般后面用不到pcl::removeNaNFromPointCloud(*cloud, *cloud, indices); //去除点云中的NaN点///cout << "读取点云个数: " << cloud->points.size() << endl;pcl::AgastKeypoint2D<pcl::PointXYZRGBA, pcl::PointUV> Agast;pcl::PointCloud<pcl::PointXYZRGBA>::Ptr keypoints(new pcl::PointCloud<pcl::PointXYZRGBA>());PointCloud<pcl::PointUV> keypoints_1;pcl::search::KdTree<pcl::PointXYZRGBA>::Ptr tree(new pcl::search::KdTree<pcl::PointXYZRGBA>());Agast.setInputCloud(cloud);Agast.setThreshold(30);     //设置角检测的阈值Agast.compute(keypoints_1);cout << "AGAST_2D points 的提取结果为 " << keypoints_1.points.size() << endl;auto width = cloud->width;auto height = cloud->height;for (auto key : keypoints_1){auto u = key.u;auto v = key.v;keypoints->push_back(cloud->points[v * width + u]);}关键点显示boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer1(new pcl::visualization::PCLVisualizer("2D AGAST"));viewer1->setBackgroundColor(255, 255, 255);viewer1->setWindowName("AGAST");viewer1->addPointCloud<pcl::PointXYZRGBA>(cloud, "sample cloud");viewer1->addPointCloud<pcl::PointXYZRGBA>(keypoints, "key cloud");//特征点viewer1->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 5, "key cloud");viewer1->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_COLOR, 1.0, 0.0, 0.0, "key cloud");while (!viewer1->wasStopped()){viewer1->spinOnce(100);boost::this_thread::sleep(boost::posix_time::microseconds(100));}return 0;
}

关键代码解析:

	pcl::AgastKeypoint2D<pcl::PointXYZRGBA, pcl::PointUV> Agast;pcl::PointCloud<pcl::PointXYZRGBA>::Ptr keypoints(new pcl::PointCloud<pcl::PointXYZRGBA>());PointCloud<pcl::PointUV> keypoints_1;pcl::search::KdTree<pcl::PointXYZRGBA>::Ptr tree(new pcl::search::KdTree<pcl::PointXYZRGBA>());Agast.setInputCloud(cloud);Agast.setThreshold(30);     //设置角检测的阈值Agast.compute(keypoints_1);
  1. pcl::AgastKeypoint2D<pcl::PointXYZRGBA, pcl::PointUV> Agast;:创建了一个AGAST角点检测器对象,用于检测2D平面上的角点。该检测器对输入的pcl::PointXYZRGBA类型的点云进行角点检测,并将检测到的角点的2D坐标存储在pcl::PointUV类型的点云中。

  2. pcl::PointCloud<pcl::PointXYZRGBA>::Ptr keypoints(new pcl::PointCloud<pcl::PointXYZRGBA>());:创建了一个指向存储PointXYZRGBA类型的点云的指针,该点云用于存储检测到的角点的3D坐标信息。

  3. PointCloud<pcl::PointUV> keypoints_1;:创建了一个点云对象,用于存储2D平面上检测到的角点的UV坐标。

  4. pcl::search::KdTree<pcl::PointXYZRGBA>::Ptr tree(new pcl::search::KdTree<pcl::PointXYZRGBA>());:创建了一个KD树,用于最近邻搜索。

  5. Agast.setInputCloud(cloud);:设置输入点云数据。这里假设cloud是一个pcl::PointCloud<pcl::PointXYZRGBA>类型的点云数据。

  6. Agast.setThreshold(30);:设置角检测的阈值。这个阈值用于决定哪些角点被检测到,较大的阈值可能会导致检测到更明显或更强烈的角点,而较小的阈值则可能会导致检测到更多的角点。

  7. Agast.compute(keypoints_1);:运行AGAST角点检测算法,将检测到的角点的2D坐标存储在keypoints_1中。

在这个情况下,主要影响角点检测的参数是阈值setThreshold。通过调整阈值,您可以控制检测到的角点的数量和质量。较大的阈值将导致检测到更少但可能更显著的角点,而较小的阈值将导致检测到更多但可能更弱的角点。根据实际应用场景和需求,您可以调整阈值来达到所需的效果。

结果:

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

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

相关文章

支付交易——跨境交易

摘要 老王兢兢业业经营生意多年&#xff0c;一步步从小杂货店做到现在&#xff0c;成立大型贸易公司。在做大做强的过程中&#xff0c;老王觉得国内市场已经饱和&#xff0c;竞争处处是红海。老王留意海外很多年了&#xff0c;决定走出去&#xff0c;转向海外:将国外的商品引进…

【51单片机】AD模数转换DA数模转换(江科大)

1.AD/DA介绍 AD(Analog to Digital):模拟-数字转换,将模拟信号转换为计算机可操作的数字信号 DA(Digital to Analog):数字-模拟转换,将计算机输出的数字信号转换为模拟信号 AD/DA转换打开了计算机与模拟信号的大门,极大的提高了计算机系统的应用范围,也为模拟信号数字化处理…

RestTemplate自定义设置

增加类&#xff1a;RestTemplateConfig import org.apache.http.client.HttpClient; import org.apache.http.impl.client.DefaultConnectionKeepAliveStrategy; import org.apache.http.impl.client.DefaultHttpRequestRetryHandler; import org.apache.http.impl.client.Htt…

GB28181 2022 下联检测项

序号 检测项目 技术要求 1平台注册 (下联) 视频监控联网测试软件注册到受测平 台,并在注册到期前进行刷新注册; 宜支持注册重定向功能。 2平台注销 (下联) 视频监控联网测试软件从受测平台注 销 3平台校时 (下联) 视频监控联网测试软件获取受测平台 的时间。 4平…

Java面向对象案例之打印机对象Printer(一)

类主要结构图 抽象类&#xff1a;Printer&#xff08;打印机作为父类&#xff09;子类&#xff1a;DotMatrixPrinter&#xff08;针式打印机类&#xff09;、InkpetPrinter&#xff08;喷墨打印机类&#xff09;、LaserPrinter&#xff08;激光打印机类&#xff09;测试类&…

# Day44、动态规划(包含题目 ● 518. 零钱兑换 II ● 377. 组合总和 Ⅳ )

代码随想录算法训练营第7周&#xff08;C语言&#xff09;|Day41&#xff08;动态规划&#xff09; Day44、动态规划&#xff08;包含题目 ● 518. 零钱兑换 II ● 377. 组合总和 Ⅳ &#xff09; 518. 零钱兑换 II 题目描述 给定不同面额的硬币和一个总金额。写出函数来计…

【嵌入式硬件】ADC(模数转换器)

目录 1.简介 2.分类 2.1 并行比较模数转换器 2.2 逐次逼近型模数转换器

【网络安全/计算机/编程】实用小工具推荐,让你的电脑更强大

在日常的电脑使用中&#xff0c;我们可能会遇到各种各样的问题&#xff0c;比如找不到想要的音乐、不知道如何合并图片、蓝屏问题困扰等。 今天&#xff0c;我将向大家推荐几款实用的小工具&#xff0c;它们可以帮助我们更方便地解决这些问题。 首先&#xff0c;是PC洛雪音乐…

数据转换成json格式

// List<SpinfokuZD> xm GetmoreSpinfoku(id); // return JsonConvert.SerializeObject(xm); //将数据转换成json格式 return JsonConvert.SerializeObject(ds); //将数据转换成json格式 spcgjlZD spselld JsonConvert.Deseriali…

基于SSM的社区疫情防控管理系统(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; 基于SSM的社区疫情防控管理系统&#xff08;有报告&#xff09;。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Spri…

题目 序列中删除指定数字

题目&#xff1a;有一个整数序列&#xff08;可能有重复的整数&#xff09;&#xff0c;现删除指定的某一个整数&#xff0c;输出删除指定数字之后的序列&#xff0c;序列中未被删除数字的前后位置没有发生改变。 解答&#xff1a; #include <stdio.h>void deleteNumbe…

精品springboot基于大数据技术的电商数据挖掘平台设计与实现购物商城

《[含文档PPT源码等]精品基于springboot基于大数据技术的电商数据挖掘平台设计与实现[包运行成功]》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功&#xff01; 软件开发环境及开发工具&#xff1a; Java——涉及技术&#xff1a; 前端…

信息安全技术基础知识

一、考点分布 信息安全基础&#xff08;※※&#xff09;信息加密解密技术&#xff08;※※※&#xff09;密钥管理技术&#xff08;※※&#xff09;访问控制及数字签名技术&#xff08;※※※&#xff09;信息安全的保障体系 二、信息安全基础 信息安全包括5个基本要素&#…

ELAdmin 隐藏添加编辑按钮

使用场景 做了一个监控模块&#xff0c;数据都是定时生成的&#xff0c;所以不需要手动添加和编辑功能。 顶部不显示 可以使用 true 或者 false 控制现实隐藏 created() {this.crud.optShow {add: false,edit: false,del: true,download: true,reset: true}},如果没有 crea…

DNS出现问题了,怎么处理?-提供完整解决方案

DNS作用 将域名(网址)解析为IP地址 DNS的作用是将域名(网址)解析为IP地址,方便用户访问互联网。通过DNS,用户可以轻松地通过域名来获取对应的IP地址,无需记住复杂的数字串。 负载均衡 负载均衡是DNS的一种功能,它能够将访问请求转发到不同的服务器,从而实现负载均衡。…

【JavaSE】数据类型和运算符

目录​​​​​​​ 前言 数据类型 1. 数据类型的分类 2. 基本数据类型 变量 1. 概叙 2. 整型变量 3. 字节型 & 短整型 & 长整型变量 4. 单 / 双精度浮点型变量 5. 字符型变量 6. 布尔型变量 类型转换 1. 自动类型转换(隐式) 2. 强制类型转换(显式) 补…

WIN11 WSL2 Ubuntu系统删除Docker镜像后磁盘空间未减少问题解决办法

因为 windows 中的 docker 使用虚拟磁盘&#xff08;VHDX&#xff09;来存储文件系统。 windows中&#xff0c;docker需在WSL2配置下才可使用。 &#xff08;WSL是windows推出的可让开发人员不需要安装虚拟机(vmware,virtbox)或者设置双系统启动就可以原生支持运行GNU/Linux的…

[PHP 反序列化参考手册]

一、简单的反序列化题目 1.P1 task.php <?php highlight_file(__FILE__);class NSS {var $name;function __destruct() {if ($this->name ctf) {echo getenv(FLAG);}} }unserialize($_GET[n]); exp.php <?phpclass NSS {var $namectf;}$anew NSS(); print(urle…

算法刷题day14

目录 引言一、平均二、三国游戏三、松散子序列 引言 今天做了三道新题&#xff0c;类型是贪心、枚举、DP&#xff0c;不是特别难&#xff0c;但是努力一下刚好能够够得上&#xff0c;还是不错的&#xff0c;只要能够一直坚持下去&#xff0c;不断刷题不断总结&#xff0c;就是…

【数据结构之排序算法】

数据结构学习笔记---010 数据结构之排序算法1、排序的基本概念及其运用1.1、常见排序算法的实现2、插入排序的实现2.1、直接插入排序2.1.1、直接插入排序的实现2.1.1.1、直接插入排序InsertSort.h2.1.1.2、直接插入排序InsertSort.c2.1.1.3、直接插入排序main.c2.1.2、直接插入…