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转换打开了计算机与模拟信号的大门,极大的提高了计算机系统的应用范围,也为模拟信号数字化处理…

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

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

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

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

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

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

精品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的…

【数据结构之排序算法】

数据结构学习笔记---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、直接插入…

【MySQL】多表关系的基本学习

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-3oES1ZdkKIklfKzq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

【双指针】:Leetcode611.有效三角形的个数

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本专栏是关于各种算法的解析&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; C 语 言 专 栏&#xff1a;C语言&#xff1a;从入门到精通 数据结构专栏&…

Linux操作系统基础(十二):yum软件包管理器

文章目录 yum软件包管理器 一、yum常用命令 二、yum在线安装软件案例 三、yum在线删除软件案例 yum软件包管理器 yum&#xff08; Yellow dog Updater, Modified&#xff09;是一个在 Fedora 和 RedHat中的 Shell 前端软件包管理器。基于RPM包管理&#xff0c;能够从指定的…

Java基于微信小程序的畅阅读微信小程序

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

CS50x 2024 - Lecture 6 - Python

00:00:00 - Introduction 00:01:01 - Python print("hello world")与c的显著差异 1.不必显式包含标准库 2.不再需要定义main函数 00:07:24 - Speller 00:13:41 - Filter from PIL import Image, ImageFilterbefore Image.open("bridge.jpg") after…

h5和微信小程序实现拍照功能(其中h5暂时无法调用闪光灯)

代码如下 <template><view class"camera"><!-- #ifdef MP --><camera ref"myCamera" id"myCamera" device-position"back" :flash"flash" error"error" style"display: block;"&…

《中国教育报》2024投稿攻略

《中国教育报》2024投稿攻略 《中国教育报》普通版&#xff0c;1800字符1/4版&#xff0c;2300字符1/3版&#xff1b;周期1-2个月 《中国教育报》理论版 收中小学&#xff0c;全包1800字符&#xff1b;2500字符。收高校 2000-2300字符&#xff0c;六个月周期。 《中国教育…

人工智能学习与实训笔记(一):零基础理解神经网络

人工智能专栏文章汇总&#xff1a;人工智能学习专栏文章汇总-CSDN博客 本篇目录 一、什么是神经网络模型 二、机器学习的类型 2.1 监督学习 2.2 无监督学习 2.3 半监督学习 2.4 强化学习 三、网络模型结构基础 3.1 单层网络 ​编辑 3.2 多层网络 3.3 非线性多层网络…