用OpenCV(Python)获取图像的SIFT特征

python 复制代码
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
img=cv.imread("../Lena.png")
img_gray=cv.cvtColor(img,cv.COLOR_BGR2GRAY)


#创建一个SIFI对象
sift=cv.SIFT_create()

#使用SIFT对象在灰度图像img_gray中检测关键点,结果存储在变量kp中
kp=sift.detect(img_gray,None)

#计算特征
#des(1100,128),一共有1100个关键点,每个关键点勇(128)长度的特征向量表示
#使用SIFT对象计算img_gray中kp的关键点,
# 计算出的关键点和描述符分别存储在keypoints和des中
kp2,des=sift.compute(img_gray,kp)
print("+++++++++++++++++++?++++++++++++++")
print(np.array(kp).shape) #(1100,)
print(np.array(kp2).shape) #(1100,)
print(des.shape) #(1100,128)
print("+++++++++++++++++++?++++++++++++++")

img2=cv.drawKeypoints(img_gray,kp,img)

plt.imshow(img2,cmap="gray")
plt.title("drawKeyPoints")
plt.show()
相关推荐
诸葛说抛光几秒前
国内大型汽车改装展览会定展 佛山改装 佛山汽车赛事
python·汽车
chouchuang9 分钟前
day-030-综合练习-笔记管理器
开发语言·笔记·python
乖巧的妹子14 分钟前
Python基础核心知识点详解:内置函数、运算符、字符串方法、数据结构与类型转换
python
幸福清风1 小时前
Python 完美处理Excel合并单元格:拆分填充+自动合并
python·excel·合并单元格·拆分单元格
云空1 小时前
《Three.js 3D实例大全》
开发语言·javascript·3d·three.js
techdashen1 小时前
Go 1.26 新增 `bytes.Buffer.Peek`:只看数据,不移动读取位置
开发语言·后端·golang
汤姆小白1 小时前
08-应用部署
人工智能·python·机器学习·numpy·transformer
C137的本贾尼2 小时前
第七篇:消息队列(MQ)——就是个带存储的异步通信管道
java·开发语言·中间件
从零开始的代码生活_2 小时前
C++ list 原理与实践:双向链表、迭代器与简化实现
开发语言·c++·后端·学习·算法·链表·list
hy.z_7773 小时前
【C语言】11. 深入理解指针1
c语言·开发语言