OpenCV实现FAST算法角点检测 、ORB算法特征点检测

news2024/11/27 1:37:29

目录

1 Fast算法

1.1 Fast算法原理

1.2  实现办法

1.2.1  机器学习的角点检测器

1.2.2  非极大值抑制

1.3  代码实现

1.4  结果展示

2 ,ORB算法

2.1代码实现

2.2 结果展示


1 Fast算法

1.1 Fast算法原理

1.2  实现办法

1.2.1  机器学习的角点检测器

1.2.2  非极大值抑制

1.3  代码实现

import cv2 as cv
import matplotlib.pyplot as plt
import numpy as np
from  pylab import mpl

mpl.rcParams['font.sans-serif']  = ['SimHei']

img = cv.imread("corner.png")

#Fast 角点检测

'''创建一个fast对象,传入阈值,  注意: 可以处理彩色空间图像'''
fast = cv.FastFeatureDetector_create(threshold=30)

#检测图像上的关键点
kp = fast.detect(img , None)

#在图像上绘制关键点
img2 = cv.drawKeypoints(img , kp , None ,color=(0,0,255))

#输出默认参数
'''打印默认参数的值,包括阈值、是否使用非极大值抑制、邻域大小以及检测到的关键点数量'''
print("Threshold: {}".format(fast.getThreshold()))
print("nonmaxSuppression:{}".format(fast.getNonmaxSuppression()))
print("neighborhood: {}".format(fast.getType()))
print("Total Keypoints with nonmaxSuppression".format(len(kp)))

#  关闭非极大值抑制
fast.setNonmaxSuppression(0)
kp = fast.detect(img , None)

print("Total Keypoints without nonmaxSuppression :{}".format(len(kp)))

#绘制未  加入  非极大值抑制的结果
img3 = cv.drawKeypoints(img , kp,None ,color=(0,0,255))

#绘制图像
fig , axes = plt.subplots(nrows=1 , ncols=2,figsize=(5,4),dpi=100)
axes[0].imshow(img2[:,:,::-1])
axes[0].set_title("加入非极大值抑制")

axes[1].imshow(img3[:,:,::-1])
axes[1].set_title("未加入非极大值抑制")
plt.show()

1.4  结果展示

2 ,ORB算法

2.1代码实现

import cv2 as cv
import matplotlib.pyplot as plt
import numpy as np
from  pylab import mpl

mpl.rcParams['font.sans-serif']  = ['SimHei']

img = cv.imread("corner.png")

#2  ORB算法角点检测
#2.1  实例化ORB对象
'''创建了一个ORB(Oriented FAST and Rotated BRIEF)特征检测器对象,并设置了最大特征点数为500。'''
orb = cv.ORB_create(nfeatures=500)

#2.2 检测关键点,并计算特征描述符
kp , des = orb.detectAndCompute(img ,None)

print(des.shape)
'''
orb.detectAndCompute()函数接受两个参数:图像(img)和掩码(None)。它将返回两个结果:关键点(kp)和描述子(des)。

关键点(kp)是一个包含检测到的关键点信息的列表。每个关键点包含其在图像中的位置、尺度、方向等属性。

描述子(des)是一个二维数组,形状为(N, 32),其中N是检测到的关键点数量。每一行代表一个关键点的描述子,描述子是一个长度为32的二进制向量。

通过打印des.shape,可以输出描述子的形状。这里的输出表示检测到的关键点数量为N,每个关键点的描述子长度为32。'''

#将关键点绘制在图像上
img2 = cv.drawKeypoints(img , kp ,None ,color=(0,0,255),flags=0)

#绘制图像
plt.figure(figsize=(5,4),dpi=100)
plt.imshow(img2[:,:,::-1])
plt.xticks([]),plt.yticks([])
plt.show()

2.2 结果展示

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

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

相关文章

React 全栈体系(十五)

第八章 React 扩展 一、setState 1. 代码 /* index.jsx */ import React, { Component } from reactexport default class Demo extends Component {state {count:0}add ()>{//对象式的setState/* //1.获取原来的count值const {count} this.state//2.更新状态this.set…

在Linux中通过docker安装宝塔面板

先在Linux中手动安装docker,然后在docker中安装宝塔面板,并进行docker网络端口映射。 手动安装docker 第一步,卸载旧版本docker。 若系统中已安装旧版本docker,则需要卸载旧版本docker以及与旧版本docker相关的依赖项。 命令&…

深入理解 Spring MVC 的工作原理

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

185_技巧_Power Query(M)语言快捷输入之搜狗输入法设置自定义短语

185_技巧_Power Query(M)语言快捷输入之搜狗输入法设置自定义短语 此前,我们发布过如何通过 QQ拼音输入法 来实现快速的输入Power Query(M) 语言。参考:https://jiaopengzi.com/730.html 今天我们来更新 Power Query(M) 语言在 搜狗输入法 中设置自定义…

iPhone 15首批体验出炉,掉漆、烫手、进灰,口碑严重崩塌

眼看 iPhone 15 系列已经上架,不知道大伙儿剁手了没有? 哦,原来你们也在等首批用户体验反馈啊! 随着 22 号正式开售,到目前不少人陆续上手 iPhone 15 系。 咱们也是翻阅了大量贴吧用户反馈、电商平台评论等&#xff…

2023-09-26 LeetCode每日一题(递枕头)

2023-09-26每日一题 一、题目编号 2582. 递枕头二、题目链接 点击跳转到题目位置 三、题目描述 n 个人站成一排,按从 1 到 n 编号。 最初,排在队首的第一个人拿着一个枕头。每秒钟,拿着枕头的人会将枕头传递给队伍中的下一个人。一旦枕…

Python读取Excel每一行为列表—大PK(openpyxl\pandas\xlwings\xlrd)看谁用时少?

目录 背景使用—openpyxl(耗时89秒输出)使用—pandas(耗时44秒输出)使用—xlwings(耗时15秒输出)使用—xlrd(耗时47秒输出)总结 背景 我们在平常办公的时候,尤其是财务人…

流媒体播放器EasyPlayer.js无法播放H.265的情况是什么原因?该如何解决?

H5无插件流媒体播放器EasyPlayer属于一款高效、精炼、稳定且免费的流媒体播放器,可支持多种流媒体协议播放,可支持H.264与H.265编码格式,性能稳定、播放流畅,能支持WebSocket-FLV、HTTP-FLV,HLS(m3u8&#…

C语言 —— 分支语句和循环语句

目录 1. 什么是语句? 2. 分支语句 (选择结构) 2.1 if语句 2.1.1 悬空else 2.1.2 if书写形式的对比 2.1.3 练习 2.2 switch语句 2.2.1 switch的使用 2.2.2 default字句 2.2.3 练习 3. 循环语句 3.1 while循环 3.1.1 while语句中的break和continue break介绍 continue介绍 3.2 f…

Linux配置命令

一&#xff1a;HCSA-VM-Linux安装虚拟机后的基础命令 1.代码命令 1.查看本机IP地址&#xff1a; ip addr 或者 ip a [foxbogon ~]$ ip addre [foxbogon ~]$ ip a 1&#xff1a;<Loopback,U,LOWER-UP> 为环回2网卡 2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP&g…

经典文献阅读之--EGO-Planner(无ESDF的四旋翼局部规划器)

0. 简介 作为局部规划器而言&#xff0c;当机器人或无人机想要避开动态障碍物时。局部规划器就显得尤为重要了。其中基于梯度的规划器被广泛用于四旋翼无人机的局部规划&#xff0c;其中欧几里得符号距离场&#xff08;ESDF&#xff09;对于评估梯度幅度和方向至关重要。然而&…

【数值计算方法】非线性方程(组)和最优化问题的计算方法:非线性方程式求根的二分法、迭代法、Newton 迭代法及其Python实现

目录 一、非线性方程式求根 1、二分法&#xff08;Bisection Method、对分法&#xff09; a. 理论简介 b. python实现 2、迭代法&#xff08;Iterative Method&#xff09; a. 理论简介 b. python实现 3、Newton 迭代法&#xff08;Newtons Method&#xff09; a. 理论…

制作搞笑聊天视频的新神器,全自动搞笑聊天对话视频生成器!

大家都知道&#xff0c;想要在社交媒体上出人头地&#xff0c;搞笑聊天视频是一个绝佳的选择。而如何制作一个搞笑的聊天视频呢&#xff1f;不要担心&#xff0c;今天我要向大家推荐的是一款神奇的搞笑聊天视频生成器&#xff0c;它可以让你轻松一键制作出搞笑对话视频。 搞笑对…

9.2.4 【MySQL】段的结构

段不对应表空间中某一个连续的物理区域&#xff0c;而是一个逻辑上的概念&#xff0c;由若干个零散的页面以及一些完整的区组成。像每个区都有对应的XDES Entry来记录这个区中的属性一样&#xff0c;定义了一个INODE Entry结构来记录段中的属性。 它的各个部分释义如下&#xf…

向AI提问,我是怎么做的?

OpenAI 是一个人工智能研究实验室和技术公司&#xff0c;而 ChatGPT&#xff08;Chatbot GPT&#xff09;是 OpenAI 开发的一种基于自然语言处理技术的聊天机器人模型。它能够理解用户的输入并生成相应的回复&#xff0c;通过模仿人类对话的方式进行交流。但是AI对话与人完全不…

IT数据预警设备监控

信息技术已经成为企业经营的重要支撑。恶意程序、黑客攻击、数据泄露等问题频繁发生&#xff0c;对公司经营影响很大。因此&#xff0c;IT预警监控已经成为公司维护数据安全的主要防御。  IT预警监控是一种基于实时监控公司IT系统&#xff0c;及时发现和处理隐性安全威胁管理…

MySQL强制使用索引的两种方式及优化索引,使用MySQL存储过程创建测试数据。

一、MySQL强制使用索引的两种方式 1、使用 FORCE INDEX 语句&#xff1a; explainselect*fromtbl_test force index (index_item_code)where(item_code between 1 and 1000) and (random between 50000 and 1000000)order byrandomlimit 1; 使用 FORCE INDEX&#xff08;索引…

「华为P60 Pro」只要599元,老牌国产再现骚操作

国内智能手机经过这么些年的洗牌&#xff0c;真正活下来且过得滋润其实也就那屈指可数的几家。 刚开始大家还能拼创意、拼设计&#xff0c;最后发现拼来拼去&#xff0c;还是逃不开同质化命运。 到了现在&#xff0c;也不比啥创意了&#xff0c;干脆堆配置、卷规格一条路走到…

14.TIM输出比较示例程序(PWM驱动LED呼吸灯PWM驱动舵机PWM驱动直流电机)

目录 输出比较相关库函数 PWM驱动LED呼吸灯 PWM驱动舵机 PWM驱动直流电机 输出比较相关库函数 1.OC初始化&#xff08;掌握&#xff09; // 配置输出比较模块&#xff0c;输出比较单元有四个&#xff0c;对应也有四个函数 // 第二个参数是结构体&#xff0c;就是输出比较…

Docker的相关知识介绍以及mac环境的安装

一、什么是Docker 大型项目组件较多&#xff0c;运行环境也较为复杂&#xff0c;部署时会碰到一些问题&#xff1a; 依赖关系复杂&#xff0c;容易出现兼容性问题开发、测试、生产环境有差异 Docker就是来解决这些问题的。Docker是一个快速交付应用、运行应用的技术&#x…