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()

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

相关文章

  • Python使用tkinter加载png、jpg等图片

    Python使用tkinter加载png、jpg等图片

    这篇文章主要介绍了Python使用tkinter加载png、jpg等图片,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • Python实现非正太分布的异常值检测方式

    Python实现非正太分布的异常值检测方式

    今天小编就为大家分享一篇Python实现非正太分布的异常值检测方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • python学习之列表的运用

    python学习之列表的运用

    这篇文章主要介绍了python学习之列表的运用,文章首先通过创建列表展开列表运用的相关资料,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-05-05
  • Numpy 数组索引的实现

    Numpy 数组索引的实现

    本文主要介绍了Numpy 数组索引的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • python pandas写入excel文件的方法示例

    python pandas写入excel文件的方法示例

    这篇文章主要介绍了python pandas写入excel文件的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06
  • python-Web-flask-视图内容和模板知识点西宁街

    python-Web-flask-视图内容和模板知识点西宁街

    在本篇文章里小编给大家分享了关于python-Web-flask-视图内容和模板的相关知识点内容,有需要的朋友们参考学习下。
    2019-08-08
  • Python常见加密模块用法分析【MD5,sha,crypt模块】

    Python常见加密模块用法分析【MD5,sha,crypt模块】

    这篇文章主要介绍了Python常见加密模块用法,结合实例形式较为详细的分析了MD5,sha与crypt模块加密的相关实现方法与操作技巧,需要的朋友可以参考下
    2017-05-05
  • Python实现视频下载与合成的示例代码

    Python实现视频下载与合成的示例代码

    这篇文章主要为大家详细介绍了Python是如何实现视频的下载以及合成的,文中的实现步骤讲解详细,感兴趣的小伙伴快跟随小编一起学习一下吧
    2022-04-04
  • Django Admin中增加导出Excel功能过程解析

    Django Admin中增加导出Excel功能过程解析

    这篇文章主要介绍了Django Admin中增加导出Excel功能过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • 用python将word文档合并实例代码

    用python将word文档合并实例代码

    大家好,本篇文章主要讲的是用python将word文档合并实例代码,感兴趣的同学赶快老看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12

最新评论