OpenCV是著名的视觉库,里面的SIFT函数用于提取特征点。我这里需要用OpenCV的python接口来调用这个函数。
遗憾的是,前几年由于专利原因,该函数在大约3.4.3版本后就不公开了,放到了 contrib 扩展包内。所以,有网友建议如果要想使用,可以把OpenCV降低版本到 3.4.1.15。
但我经过实验,此版本还是不行,使用
sift = cv2.xfeatures2d.SIFT_create()
时,还是会提示:module ‘cv2.cv2‘ has no attribute ‘xfeatures2d‘。
好消息是,去年3月以后SIFT专利就已经到期了,OpenCV官方也把它挪出非免费模块了!我查了一下版本,从OpenCV3.4.10和OpenCV4.3后,就已经可以免费使用了!
另外需要注意的是,上面一句适用于OpenCV3.4.10,如果是OpenCV4.3,需要改为:
sift = cv2.SIFT_create()