无法使用opencv的SIFT算法

问题描述

我正在尝试使用opencv实现图像拼接。 具体来说,我正在关注this教程。

我遇到的问题是无法使用筛选算法。 在网上浏览后,我发现该算法已获得专利或其他专利,现在已不再使用,并且已在回购中移动,现在我似乎找不到任何有用的教程来安装正确的东西以使用此算法。算法。

任何人都可以解释一下应该安装什么,以便该行顺利通过吗? (第54行)

descriptor = cv2.xfeatures2d.SIFT_create()

注意:尝试在Windows上使用带有opencv-contrib 4的opencv4。
注意2:关于堆栈溢出的其他答案不会更新为上述更改。

解决方法

筛选算法自2020年3月起免费,已从OpenCV-Contrib(非免费)转移到OpenCV的主存储库(免费)

来源:

https://piero.dev/2019/04/the-sift-patent-has-expired/#:~:text=As%20of%20March%207th%20of,on%201999-03-08

https://github.com/opencv/opencv/wiki/GSoC_2020#idea-better-sift-in-the-main-repository

https://github.com/opencv/opencv/issues/16736

语法从descriptor = cv2.xfeatures2d.SIFT_create ()变为descriptor = cv.SIFT_create ()