我是 OpenCV 的新手,正在尝试将 SIFT 和 SURF 用于项目。
在我的笔记本电脑上,我有 OpenCV 版本 = 4.5.1.48,还添加了版本 4.5.1.48 的 OpenCV-contrib-python
目前我面临的问题是我在遵循文档后遇到的错误 SIFT 在遵循文档后完美运行,但 SURF 不工作并给我以下代码的错误
代码1
冲浪 = cv.xfeatures2d.SURF_create()
AttributeError: 模块 'cv2.cv2' 没有属性 'xfeatures2d'
代码2
冲浪 = cv2.SURF_create()
AttributeError: 模块 'cv2.cv2' 没有属性 'SURF_create'
在阅读了关于 Stack overflow 的许多答案后,我更改了 OpenCV 的版本并做了很多事情,但对我来说没有任何效果
我是新手,请有人指导我完成此操作
我也读到过专利到期的消息,但我的情况没有任何效果请告诉我,如果我哪里错了
提前致谢
最佳答案
OpenCV version= 4.5.1.48
这可能来自 pypi,并且不包含任何“非自由”代码
(SURF 仍获得专利,如果您绝对需要它,则必须使用 OPENCV_ENABLE_NONFREE=ON cmake 标志从 src(使用 contrib 模块)构建
然而,由于 SIFT 专利已于去年到期,因此请改用它
sift = cv2.SIFT_create() # it's in main, no more xfeatures2d
顺便说一句,不要同时安装 opencv-python 和 opencv-contrib-python,只安装后者(否则前者会“隐藏”它,并且您不能使用 contrib 模块。这就是原因对于 AttributeError: module 'cv2.cv2' has no attribute 'xfeatures2d'
)
关于python - AttributeError : module 'cv2.cv2' has no attribute 'SURF_create' , 2.模块 'cv2.cv2'没有属性 'xfeatures2d',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69993071/