OpenCV 实现 SIFT→SURF 算法关键点检测实现

1,SIFT算法原理

OpenCV 实现 SIFT→SURF 算法关键点检测实现_第1张图片

1.1,基本流程

OpenCV 实现 SIFT→SURF 算法关键点检测实现_第2张图片

1.1.1   尺度空间极值检测

OpenCV 实现 SIFT→SURF 算法关键点检测实现_第3张图片

OpenCV 实现 SIFT→SURF 算法关键点检测实现_第4张图片

OpenCV 实现 SIFT→SURF 算法关键点检测实现_第5张图片

OpenCV 实现 SIFT→SURF 算法关键点检测实现_第6张图片

OpenCV 实现 SIFT→SURF 算法关键点检测实现_第7张图片

OpenCV 实现 SIFT→SURF 算法关键点检测实现_第8张图片

1.1.2 关键点定位

OpenCV 实现 SIFT→SURF 算法关键点检测实现_第9张图片

1.1.3  关键点方向确定

OpenCV 实现 SIFT→SURF 算法关键点检测实现_第10张图片

OpenCV 实现 SIFT→SURF 算法关键点检测实现_第11张图片

OpenCV 实现 SIFT→SURF 算法关键点检测实现_第12张图片

OpenCV 实现 SIFT→SURF 算法关键点检测实现_第13张图片

OpenCV 实现 SIFT→SURF 算法关键点检测实现_第14张图片

1.1.4  关键点描述

OpenCV 实现 SIFT→SURF 算法关键点检测实现_第15张图片

OpenCV 实现 SIFT→SURF 算法关键点检测实现_第16张图片

OpenCV 实现 SIFT→SURF 算法关键点检测实现_第17张图片

OpenCV 实现 SIFT→SURF 算法关键点检测实现_第18张图片

1.1.5   总结

1.2   SURF原理

OpenCV 实现 SIFT→SURF 算法关键点检测实现_第19张图片

2  代码实现

OpenCV 实现 SIFT→SURF 算法关键点检测实现_第20张图片

OpenCV 实现 SIFT→SURF 算法关键点检测实现_第21张图片

import cv2 as cv
import matplotlib.pyplot as plt
import numpy as np
from  pylab import mpl

mpl.rcParams['font.sans-serif']  = ['SimHei']

#读取图像
img = cv.imread('aa.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)

#图像的显示
plt.figure(figsize=(5,4),dpi=100)
plt.imshow(img[:,:,:-1]),plt.title("sift  关键点检测")
plt.xticks([]),plt.yticks([])
plt.show()

3  结果展示

OpenCV 实现 SIFT→SURF 算法关键点检测实现_第22张图片

4,你肯定会遇到报错

cv2.error: OpenCV(3.4.8) C:\projects\opencv-python\opencv_contrib\modules\xfeatures2d\src\sift.cp

解决办法(点击):

解决办法地址

你可能感兴趣的:(OpenCV从入门到精通,opencv,人工智能,计算机视觉,python)