OpenCV基于ORB算法实现角点检测

 更新时间:2022年08月01日 11:56:56   作者:ʚVVcatɞ  
这篇文章主要为大家详细介绍了OpenCV基于ORB算法实现角点检测,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了OpenCV基于ORB算法实现角点检测的具体代码,供大家参考,具体内容如下

ORB算法是FAST算法和BRIEF算法的结合,ORB可以用来对图像中的关键点快速创建特征向量,并用这些特征向量来识别图像中的对象。

实例化ORB

orb = cv.ORB_create(nfeatures)

参数:

  • nfeatures:特征点的最大数量

利用orb.detectAndCompute()检测关键点并计算

kp, des = orb.detectAndCompute(gray, None)

参数:

  • gray:进行关键点检测的图像(灰度图像)

返回:

  • kp:关键点信息,包括位置,尺度,方向信息
  • des:关键点描述符,每个关键点BRIEF特征向量,二进制字符串。

将关键点检测结果绘制在图像上

cv.drawKeypoints(image, keypoints, outputimage, color, flags)

参数:

  • image: 原始图像
  • keypoints:关键点信息,将其绘制在图像上
  • outputimage:输出图片,可以是原始图像
  • color:颜色设置,通过修改(b,g,r)的值,更改画笔的颜色,b=蓝色,g=绿色,r=红色。
  • flags:绘图功能的标识设置

1、cv2.DRAW_MATCHES_FLAGS_DEFAULT:创建输出图像矩阵,使用现存的输出图像绘制匹配对和特征点,对每一个关键点只绘制中间。
2、cv2.DRAW_MATCHES_FLAGS_DRAW_OVER_OUTIMG:不创建输出图像矩阵,而是在输出图像上绘制匹配对。
3、cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS:对每一个特征点绘制带大小和方向的关键点图形。
4、cv2.DRAW_MATCHES_FLAGS_NOT_DRAW_SINGLE_POINTS:单点的特征点不被绘制。

import cv2 as cv
from matplotlib import pyplot as plt

# 1.图像读取
img = cv.imread("1.jpg")
gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)

# 2.ORB角点检测
# 2.1实例化ORB对象
orb = cv.ORB_create(nfeatures=1000)

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

print(des.shape)

# 3.将关键点检测在图像上
img2 = cv.drawKeypoints(img, kp, None, flags=0) # 也可以添加 color 参数指定图像显示关键点的颜色,例如 img2 = cv.drawKeypoints(img, kp, None, color=(0, 0, 255), flags=0)

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • django做form表单的数据验证过程详解

    django做form表单的数据验证过程详解

    这篇文章主要介绍了django做form表单的数据验证过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • Python采集某评论区内容的实现示例

    Python采集某评论区内容的实现示例

    本文主要介绍了Python采集某评论区内容的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • python登录pop3邮件服务器接收邮件的方法

    python登录pop3邮件服务器接收邮件的方法

    这篇文章主要介绍了python登录pop3邮件服务器接收邮件的方法,涉及Python操作邮件的相关技巧,需要的朋友可以参考下
    2015-04-04
  • 利用Python绘制一个可爱的米老鼠

    利用Python绘制一个可爱的米老鼠

    turtle库是一个点线面的简单图像库,在Python2.6之后被引入进来,能够完成一些比较简单的几何图像可视化。本文将利用turtle绘制一个可爱的米老鼠,感兴趣的可以试一试
    2022-03-03
  • python生成并处理uuid的实现方式

    python生成并处理uuid的实现方式

    这篇文章主要介绍了python生成并处理uuid的实现方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • 一文详解Python中生成器的原理与使用

    一文详解Python中生成器的原理与使用

    生成器表达式本质上就是一个迭代器,是定义迭代器的一种方式,是允许自定义逻辑的迭代器。本文将详细讲解一下Python中生成器的原理与使用,需要的可以参考一下
    2022-05-05
  • 探究Python的Tornado框架对子域名和泛域名的支持

    探究Python的Tornado框架对子域名和泛域名的支持

    这篇文章主要介绍了探究Python的Tornado框架对子域名和泛域名的支持,Tornado作为一个典型的异步框架、在Python开发者中的人气相当高,需要的朋友可以参考下
    2015-05-05
  • python距离测量的方法

    python距离测量的方法

    这篇文章主要为大家详细介绍了python距离测量的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • Python-re中search()函数的用法详解(查找ip)

    Python-re中search()函数的用法详解(查找ip)

    这篇文章主要介绍了Python-re中search()函数的用法-----查找ip,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • python 数字转换为日期的三种实现方法

    python 数字转换为日期的三种实现方法

    在Python中,我们经常需要处理日期和时间,本文主要介绍了python 数字转换为日期的三种实现方法,包含datetime模块,strftime方法及pandas库,具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02

最新评论