new*_*ack 2 python opencv surf sift
我正在尝试使用 SIFT 和 SURF。
在我的笔记本电脑上,我有 OpenCV 版本 = 4.5.1.48,还添加了版本 4.5.1.48 的 OpenCV-contrib-python
我在遵循文档后收到错误 SIFT 在遵循文档后完美工作,但 SURF 不起作用并给我错误以下代码
代码1
surf = cv.xfeatures2d.SURF_create()
AttributeError: module 'cv2.cv2' has no attribute 'xfeatures2d'
Run Code Online (Sandbox Code Playgroud)
代码2
surf = cv2.SURF_create()
AttributeError: module 'cv2.cv2' has no attribute 'SURF_create'
Run Code Online (Sandbox Code Playgroud)
在阅读了 Stack Overflow 上的许多答案后,我更改了 OpenCV 的版本并做了很多事情,但没有任何效果对我有用
我也读到专利即将到期,但在我的案例中没有任何效果,请告诉我我是否在某个地方错了
ber*_*rak 11
OpenCV 版本= 4.5.1.48
这可能来自 pypi,并且不包含任何“非自由”代码
(SURF 仍然是专利的,如果你绝对需要它,你必须从 src (使用 contrib 模块)构建,使用 OPENCV_ENABLE_NONFREE=ON cmake 标志)
然而,由于 SIFT 专利去年到期,请使用该专利
sift = cv2.SIFT_create() # it's in main, no more xfeatures2d
Run Code Online (Sandbox Code Playgroud)
顺便说一句,不要同时安装opencv-python 和 opencv-contrib-python,仅安装后者(否则前者将“隐藏”它,并且您不能使用 contrib 模块。这就是原因AttributeError: module 'cv2.cv2' has no attribute 'xfeatures2d')