python opencv3 特征提取与描述 DoG SIFT hessian surf

git:https://github.com/linyi0604/Computer-Vision

DoG和SIFT特征提取与描述

 1 # coding:utf-8
 2 
 3 import cv2
 4 
 5 # 读取图片
 6 img = cv2.imread("../data/walez1.jpg")
 7 # 转为灰度图像
 8 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
 9 # 创建一个sift对象 并计算灰度图像
10 sift = cv2.xfeatures2d.SIFT_create()
11 keypoints, descriptor = sift.detectAndCompute(gray, None)
12 """
13 sift对象会使用DoG检测关键点,对关键点周围的区域计算向量特征,检测并计算
14 返回 关键点和描述符
15 关键点是点的列表
16 描述符是检测到的特征的局部区域图像列表
17 
18 关键点的属性:
19     pt: 点的x y坐标
20     size: 表示特征的直径
21     angle: 特征方向
22     response: 关键点的强度
23     octave: 特征所在金字塔层级
24         算法进行迭代的时候, 作为参数的图像尺寸和相邻像素会发生变化
25         octave属性表示检测到关键点所在的层级
26     ID: 检测到关键点的ID
27 
28 """
29 # 在图像上绘制关键点
30 # DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS表示对每个关键点画出圆圈和方向
31 img = cv2.drawKeypoints(image=img, outImage=img, keypoints=keypoints,
32                         flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS,
33                         color=(51, 163, 236))
34 
35 cv2.imshow("sift_keypoints", img)
36 cv2.waitKey()
37 cv2.destroyAllWindows()

hessian 与SURF特征提取与匹配

 1 # coding:utf-8
 2 
 3 import cv2
 4 
 5 img = cv2.imread("../data/walez1.jpg")
 6 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
 7 
 8 surf = cv2.xfeatures2d.SURF_create(8000)
 9 """
10     创建surf对象,设置阈值,阈值越高检测到的特征就越少,
11     通过调整阈值得到合适的关键点
12 """
13 # 检测图像中的关键点和描述
14 keypoints, descriptor = surf.detectAndCompute(gray, None)
15 """
16 sift对象会使用DoG检测关键点,对关键点周围的区域计算向量特征,检测并计算
17 返回 关键点和描述符
18 关键点是点的列表
19 描述符是检测到的特征的局部区域图像列表
20 
21 关键点的属性:
22     pt: 点的x y坐标
23     size: 表示特征的直径
24     angle: 特征方向
25     response: 关键点的强度
26     octave: 特征所在金字塔层级
27         算法进行迭代的时候, 作为参数的图像尺寸和相邻像素会发生变化
28         octave属性表示检测到关键点所在的层级
29     ID: 检测到关键点的ID
30 
31 """
32 # 将关键点画在原图像上
33 cv2.drawKeypoints(image=img, outImage=img,
34                   keypoints=keypoints,flags=4,
35                   color=(51, 163, 236))
36 
37 cv2.imshow("surf_detected", img)
38 cv2.waitKey()
39 cv2.destroyAllWindows()

原文地址:https://www.cnblogs.com/Lin-Yi/p/9433932.html