在学习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:响应程度,准确的说是该点角点的程度。文章来源:https://www.toymoban.com/news/detail-403782.html
class_id:对图片进行分类时,可以用class_id对每个特征点进行区分,未设定时为-1,需要靠自己设定。文章来源地址https://www.toymoban.com/news/detail-403782.html
到了这里,关于函数cv2.xfeatures2d.SIFT_create().detectAndCompute()的返回值的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!