python - AttributeError : module 'cv2.cv2' has no

我是 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/

相关文章:

r - R中多列的值计数

r - 从列中提取日期并在 R 中缺少年份时添加年份

python - 算法题: Finding the cheapest flight

php - undefined variable : data , $data 未定义。拉维尔 8

asp.net-core - 安装 .NET 6 后无法创建 EF 迁移

bash - 组合两个 grep 命令来处理来自文件的输入,或者 grep 行以一个特定的子字符串开

r - 如何对该数据集进行排序以创建合适的数据框

c# - 为什么不推荐使用堆来排序LinkedList?

reactjs - 如何将参数传递给从自定义 Hook 转换的函数?

node.js - 使用 Fastify : "@nestjs/platform-express"