函数cv2.xfeatures2d.SIFT_create().detectAndCompute()的返回值

在学习sift进行图像拼接程序时,发现别人写的代码里有一块知识不懂。

# 建立SIFT生成器
descriptor = cv2.SIFT_create()
# 检测SIFT特征点,并计算描述子
(kps, features) = descriptor.detectAndCompute(image, None)
kps = np.float32([kp.pt for kp in kps])

注:一般建立sift生成器是用函数cv2.xfeatures2d.SIFT_create()。这里使用的opencv版本是4.5.5,建议opencv版本是4.0以上时使用cv2.SIFT_create()。sift因为是有版权的,opencv版本中有3.4.2.16可以直接使用cv2.xfeatures2d.SIFT_create(),当opencv版本过高时cv2.xfeatures2d.SIFT_create()会出现如下情况

遇到这种情况建议回退opencv版本或者使用cv2.SIFT_create()

最初不明白kp.pt是什么意思,经查询得知

kps, features = cv2.SIFT_create().detectAndCompute()

如上函数的返回值里kps是关键点,它所包含的信息有:

pt:关键点点的坐标

angle:角度,表示关键点的方向。

size:该点直径的大小

octave:从金字塔哪一层提取的得到的数据。

response:响应程度,准确的说是该点角点的程度。

class_id:对图片进行分类时,可以用class_id对每个特征点进行区分,未设定时为-1,需要靠自己设定。

你可能感兴趣的:(人工智能,深度学习)