opencv函数提取图片的sift特征并显示(python)
程序员文章站
2022-03-23 12:54:37
...
介绍
【SIFT特征生成的过程】:
- 构建尺度空间,检测极值点,获得尺度不变性:搜索所有尺度上的图像位置。通过高斯微分函数来识别潜在的对于尺度和旋转不变的兴趣点。
- 特征点过滤并进行精确定位:在每个候选的位置上,通过一个拟合精细的模型来确定位置和尺度。关键点的选择依据于它们的稳定程度。
- 为特征点分配方向值:基于图像局部的梯度方向,分配给每个关键点位置一个或多个方向。所有后面的对图像数据的操作都相对于关键点的方向、尺度和位置进行变换,从而提供对于这些变换的不变性。
- 生成特征描述子:在每个关键点周围的邻域内,在选定的尺度上测量图像局部的梯度。这些梯度被变换成一种表示,这种表示允许比较大的局部形状的变形和光照变化。
代码
import cv2 as cv
img = cv.imread(r"te.jpg")
cv.imshow("original",img)
gray = cv.cvtColor(img,cv.COLOR_RGB2GRAY)
sift = cv.xfeatures2d.SIFT_create()
keypoints, descriptor = sift.detectAndCompute(gray,None)
cv.drawKeypoints(image = img,
outImage = img,
keypoints = keypoints,
color = (51,163,236))
cv.imshow("SIFT",img)
cv.waitKey(0)
cv.destroyAllWindows()
示例
下一篇: HOG特征计算及实现(python)