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

作者:?VVcat? 时间:2021-08-20 03:08:13 

本文实例为大家分享了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()

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

来源:https://blog.csdn.net/qq_44989881/article/details/116156729

标签:OpenCV,ORB,角点检测
0
投稿

猜你喜欢

  • python中如何写类

    2023-09-02 18:19:58
  • 利用索引提高SQL Server数据处理的效率

    2009-01-08 15:32:00
  • python中matplotlib实现最小二乘法拟合的过程详解

    2022-03-07 05:17:51
  • CSS制作圆角导航的另一思路

    2008-11-06 11:39:00
  • numpy中np.dstack()、np.hstack()、np.vstack()用法

    2021-08-27 11:47:42
  • Python2与Python3的区别实例总结

    2021-05-20 00:04:24
  • Python字符串中删除特定字符的方法

    2023-07-25 18:58:54
  • Tensorflow tf.nn.atrous_conv2d如何实现空洞卷积的

    2023-03-29 11:05:43
  • SQL Server与Oracle、DB2的优劣对比

    2009-01-07 14:16:00
  • 教你快速掌握更改表中列顺序的好方法

    2008-11-27 17:14:00
  • python实现猜数字游戏(无重复数字)示例分享

    2023-12-15 19:48:46
  • Python实现抓取腾讯视频所有电影的示例代码

    2021-09-11 13:17:37
  • 分享Pandas库中的一些宝藏函数transform()

    2022-05-03 17:24:44
  • python 基于selenium实现鼠标拖拽功能

    2022-10-30 17:03:07
  • 能说明一下GETROWS的用法吗?

    2009-11-02 20:12:00
  • python 实现的截屏工具

    2023-05-15 00:20:39
  • Python pandas读取CSV文件的注意事项(适合新手)

    2021-10-12 12:07:32
  • 网页常用特效整理:初级篇

    2023-06-27 00:58:37
  • Python3 能振兴 Python的原因分析

    2021-01-11 06:44:12
  • python PyQt5/Pyside2 按钮右击菜单实例代码

    2023-03-11 15:03:19
  • asp之家 网络编程 m.aspxhome.com