SIFT算法
由于版权问题,旧版本的在xfeatures2d模块下
cv2.xfeatures2d.SIFT_create()
而较新版本的可以直接使用
cv2.SIFT_create()
create()函数用于创建SIFT算法的类对象,参数如下
参数 | 含义 |
---|---|
nfeatures | 保留的最优特征数量 |
nOctavwLayers | 每个Octave的层数 |
contrastThreshold | 对比度阈值,阈值越大,检测的特征越少 |
edgeThreshold | 过滤疑似边缘的特征阈值,越大,保留的特征越多 |
sigma | 高斯模糊参数 |
drawKeypoints()用于特征点的绘制
参数 | 含义 |
---|---|
image | 输入图像 |
keypoints | 存储检测到的特征点 |
outImage | 输出图像 |
color | 绘制特征点颜色 |
flags | 绘制特征点方式 |
import cv2
src = cv2.imread("img.png", 1)
# SIFT算法检测特征点
sift = cv2.SIFT_create()
key_point, descriptor = sift.detectAndCompute(src, None)
# 绘制特征点
draw_keypoints = cv2.drawKeypoints(src, key_point, src, color=(128, 128, 128))
cv2.imwrite("sift_point.jpg", draw_keypoints)