OpenCV - SIFT-SURF(Python实现)

实现步骤

  • cv2.xfeatures2d.SIFT_create(实例化sift)

  • sift.detect(找出关键点)

  • cv2.drawKeypoints(画出关键点)

  • sift.compute(根据关键点计算sift向量)

参数

sift = cv2.xfeatures2d.SIFT_create()

参数说明:sift为实例化的sift函数

kp = sift.detect(gray, None)  

参数说明: kp表示生成的关键点,gray表示输入的灰度图,

ret = cv2.drawKeypoints(gray, kp, img)

参数说明:gray表示输入图片, kp表示关键点,img表示输出的图片

kp, dst = sift.compute(kp) 

参数说明:kp表示输入的关键点,dst表示输出的sift特征向量,通常是128维的

代码

import cv2
import numpy as np
img = cv2.imread('image.jpg')
gray= cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
sift = cv2.xfeatures2d.SIFT_create() #sifi
kp = sift.detect(gray,None) #找到关键点
cv2.drawKeypoints(gray,kp,img) #绘制关键点

cv2.imshow("img",img)
cv2.waitKey()
cv2.destroyAllWindows()

在这里插入图片描述
drawKeypoints函数里设置参数为cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS就会绘制代表关键点大小的圆圈甚至可以绘制除关键点的方向。

cv2.drawKeypoints(gray,kp,img,flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS) #绘制关键点

在这里插入图片描述

使用关键点找出sift特征向量

kp, des = sift.compute(gray, kp)
print(np.shape(kp))
print(np.shape(des))
print(des[0])

实现原理戳戳戳

SURF

SURF(加速稳健特征)算法。跟它的名字一样,这是个算法是加速版的 SIFT。

import cv2
import numpy as np
img = cv2.imread('image.jpg')
gray= cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
surf = cv2.xfeatures2d.SURF_create(7000) #SURF Hessian 的阈值
kp, des = surf.detectAndCompute(img,None) #寻找关键点
print( len(kp)) #打印关键点个数
cv2.drawKeypoints(img,kp,img,flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS) #绘制关键点
cv2.imshow("img",img)
cv2.waitKey()
cv2.destroyAllWindows()

29

在这里插入图片描述

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值