意见箱
恒创运营部门将仔细参阅您的意见和建议,必要时将通过预留邮箱与您保持联络。感谢您的支持!
意见/建议
提交建议

OpenC如何实现角点检测,过程是怎样

来源:恒创科技 编辑:恒创科技编辑部
2024-01-08 01:29:59
今天这篇我们来学习和了解“OpenC如何实现角点检测,过程是怎样”,下文的讲解详细,步骤过程清晰,对大家进一步学习和理解“OpenC如何实现角点检测,过程是怎样”有一定的帮助。有这方面学习需要的朋友就继续往下看吧!

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

实例化ORB


OpenC如何实现角点检测,过程是怎样

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


感谢各位的阅读,以上就是“OpenC如何实现角点检测,过程是怎样”的内容了,经过本文的学习后,相信大家对OpenC如何实现角点检测,过程是怎样都有更深刻的体会了吧。这里是恒创科技,小编将为大家推送更多相关知识点的文章,欢迎关注!
上一篇: Pandas中怎么实现时间类型转换 下一篇: 这篇文章给大家分享的是Python数值的交换怎样做,实现方法及代码是什么