OpenCV SIFT检测关键点
SIFT原理:
尺度空间极值检测:构建高斯金字塔,高斯差分金字塔,检测极值点。
关键点定位:去除对比度较小和边缘对极值点的影响。
关键点方向确定:利用梯度直方图确定关键点的方向。
关键点描述:对关键点周围图像区域分块,计算块内的梯度直方图,生成具有特征向量,对关键点信息进行描述。
在OpenCV中利用SIFT检测关键点的流程如下所示:
1.实例化sift
sift = cv.xfeatures2d.SIFT_create()
2.利用sift.detectAndCompute()检测关键点并计算
kp,des = sift.detectAndCompute(gray,None)
参数:
- gray: 进行关键点检测的图像,注意是灰度图像
返回:
- kp: 关键点信息,包括位置,尺度,方向信息
- des: 关键点描述符,每个关键点对应128个梯度信息的特征向量
3.将关键点检测结果绘制在图像上
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
import matplotlib.pyplot as plt# 1 读取图像
img = cv.imread('./1.jpg')
gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)# 2 sift关键点检测
# 2.1 实例化sift对象
sift = cv.xfeatures2d.SIFT_create()# 2.2 关键点检测:kp关键点信息包括方向,尺度,位置信息,des是关键点的描述符
kp, des = sift.detectAndCompute(gray, None)# 2.3 在图像上绘制关键点的检测结果
cv.drawKeypoints(img, kp, img, flags=cv.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)# 3 图像显示
plt.figure(figsize=(8, 6), dpi=100)
plt.imshow(img[:, :, ::-1]), plt.title('sift检测')
plt.xticks([]), plt.yticks([])
plt.show()
OpenCV SIFT检测关键点相关推荐
- 使用OpenCV进行人脸关键点检测
使用OpenCV进行人脸关键点检测 1 双脸效果 2 单脸效果
- OpenCV与图像处理学习十七——OpenCV人脸检测(含代码)
OpenCV与图像处理学习十七--OpenCV人脸检测(含代码) 一.人脸识别概要 1.1 人脸检测 1.2 人脸对齐(Face Alignment) 1.3 人脸特征提取(Face Feature ...
- OpenCV SIFT源码讲解——代码逻辑宏观窥探
OpenCV SIFT源码讲解--代码逻辑宏观窥探 一.暴露在外的接口:SIFT 二.隐藏在SIFT背后的本质:SIFT_Impl 三.使用sift算法全流程 一.暴露在外的接口:SIFT 一般来说, ...
- Pyhton,OpenCV对象检测之——Haar级联人脸及眼睛检测
Pyhton,OpenCV对象检测之--Haar级联人脸及眼睛检测 1. 效果图 2. 原理 2.1 Haar人脸检测原理 2.2 Haar级联预训练的模型 3. 源码 3.1 图像面部及眼睛检测 3 ...
- 使用Python,OpenCV+OCR检测护照图像中的机器可读区域(MRZ Machine-Readable Zones)
使用Python,OpenCV+OCR检测护照图像中的机器可读区域(MRZ Machine-Readable Zones) 1. 效果图 2. 原理 3. 源码 参考 这篇博客将介绍如何只使用基本的图 ...
- 如何使用 OpenCV Python 检测颜色
作者 | 小白 来源 | 小白学视觉 在这篇文章中,我们将看到如何使用 Python 中的 OpenCV 模块检测颜色,进入这个领域的第一步就是安装下面提到的模块. pip install openc ...
- OpenCV行人检测
注:本文翻译自:Pedestrian Detection OpenCV. 你知道OpenCV里面已经内置的行人检测方法吗?在OpenCV里面,有一个预先训练好了的HOG+线性SVM模型,能够对图像和视 ...
- OpenCV SURF检测的实例(附完整代码)
OpenCV SURF检测的实例 OpenCV SURF检测的实例 OpenCV SURF检测的实例 #include <iostream> #include "opencv2/ ...
- OpenCV方形检测Square Detection的实例(附完整代码)
OpenCV方形检测Square Detection的实例 OpenCV方形检测Square Detection的实例 OpenCV方形检测Square Detection的实例 #include & ...
最新文章
- python是属于it界吗_转行IT行业,Python是不是一个好的选择?
- GPU Architect Functional Verification
- 计蒜客——学生成绩查找系统
- LIRe 源代码分析 1:整体结构
- Centos6.5 安装配置 Apache +mysql +php 操作文档
- MODIS数据火点提取方法
- 【数据分析软件】【Weka】第一课:超easy安装教程
- PHP发币,处理货币价值的PHP库
- C# WinAPI 编程详解(一)
- qduoj 分辣条1 (搜索+剪枝)
- Linux系统编程 | 01 -文件操作
- iOS APP中嵌入网速监测功能
- python汽车_Python 小车代码
- 电子版产品手册如何制作?简单的方法来了
- file upload 攻防世界_菜鸡 CTF 之旅 Writeup (攻防世界)
- 2021年国际及中国钢材价格走势、价格变化因素及后期钢材价格走势分析[图]
- 如何区别药品的通用名、商品名(品牌名)和别名?
- 陈皓,酷壳coolshell.cn博主
- 什么是期权激励_理解激励股票期权的快速指南
- 如何用 Python 做自动化测试