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

咖啡半糖
咖啡半糖
发布时间:2026-10-16| 5人浏览过
原创

本文详细介绍如何利用OpenCV中的ORB算法进行图像角点检测。内容涵盖ORB算法原理、cv.ORB_create实例化参数设置、detectAndCompute函数用法及返回值解析,以及cv.drawKeypoints绘图函数的颜色与标志位配置,附带完整Python代码示例供参考。

本文分享基于OpenCV使用ORB算法进行角点检测的具体实现代码,供读者参考学习。

ORB算法融合了FAST关键点检测与BRIEF特征描述子的优势,能够快速提取图像中的关键点并生成特征向量,进而用于图像对象的识别与匹配。

实例化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:控制绘图行为的标识符。

可选的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算法实现角点检测的全部内容,希望对本读者的学习有所帮助,欢迎继续支持本站。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。