cv2–特征点特征提取(Sift,Orb,Surf)
文章目录
- cv2--特征点特征提取(Sift,Orb,Surf)
 - 1. 关键点和关键点描述子
 - 2. Sift
 - 2.1 检测的步骤
 - 2.2 同时计算关键点kp和描述子des
 
- 3. Surf
 - 4. Orb
 - 5. 总结
 
1. 关键点和关键点描述子
- kp(关键点):位置、大小、方向
 - des(关键点描述子):记录了关键点周围对其有贡献的像素点的一组向量值,不受仿射变换、光照变换等影响。
 
2. Sift
- Scale-Invariant Feature Transform :与缩放无关的特征转换
 - 解决问题:Harris角点检测,当图像缩放后,原来的角点可能会消失如下图所示。SIFT就是为了解决这一问题。
 

2.1 检测的步骤
# 1.创建SIFT对象  
sift = cv2.SIFT_create()
# 2.进行检测  
kp = sift.detect(img , mask) # mask感兴趣区域,默认None
# 3.绘制关键点  
drawKeypoints(gray , kp , img) # img是要绘制的图片
 
2.2 同时计算关键点kp和描述子des
kp, des = sift.detectAndCompute(img, mask=None)
# mask : 指明对img的哪个区域进行计算,其作用是进行特征匹配
 
3. Surf
- Speeded-Up Robust Features
 - SIFT最大的问题是速度慢,所以有了该算法。
 
# 1.创建对象 
surf = cv2.xfeatures2d.SURF_create()
# 2.计算关键点和描述子  
kp,des = surf.detectAndCompute(img , mask)
 
检测结果同SIFT,检测到的角点会少一点。
4. Orb
- Oriented FAST and Rotated BRIEF
 - 优点:可以做到实时检测。
 
orb = cv2.ORB_create()
kp,des = orb.detectAndCompute(gray,None)
 
orb看到检测到的特征点非常少,这是因为实时性提高了,计算量减少了,只留下关键点。
5. 总结
记录一下,方便自己使用。















![[oeasy]python0080_设置RGB颜色_24bit_24位真彩色_颜色设置](https://img-blog.csdnimg.cn/img_convert/abf790aef6c67ad7af99b9458228338e.png)



