您现在的位置是:网站首页> 编程资料编程资料
OpenCV基于ORB算法实现角点检测_python_
2023-05-26
283人已围观
简介 OpenCV基于ORB算法实现角点检测_python_
本文实例为大家分享了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()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
您可能感兴趣的文章:
相关内容
- Anaconda环境克隆、迁移的详细步骤_python_
- OpenCV实现图片亮度增强或减弱_python_
- Python+OpenCV实现分水岭分割算法的示例代码_python_
- 网络浏览器中运行Python脚本PyScript剖析_python_
- opencv实现文档矫正_python_
- OpenCV形状检测的示例详解_python_
- python语言中pandas字符串分割str.split()函数_python_
- python绘制云雨图raincloud plot_python_
- python计算列表元素与乘积详情_python_
- Pygame游戏开发之太空射击实战敌人精灵篇_python_
