You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

无法在OpenCV中安装及使用SIFT,调用cv2.xfeatures2d.SIFT_create()报错求助

解决OpenCV中无法调用SIFT的问题

嘿,我之前也踩过这个坑!遇到module has no attribute named xfeatures2d这个报错,主要是OpenCV版本和模块归属的问题,给你几个针对性的解决办法:

情况1:你使用的是OpenCV 4.4及以上版本

从OpenCV 4.4开始,SIFT已经从xfeatures2d扩展模块移到了主模块里,不需要再通过xfeatures2d调用了。直接把代码改成:

sift = cv2.SIFT_create()

运行这个应该就能正常创建SIFT实例了。

情况2:你使用的是OpenCV 3.x或者4.0-4.3版本

这些版本里SIFT还属于扩展模块,需要额外安装opencv-contrib-python包,而且必须保证主包和contrib包的版本完全一致,不然很容易出问题。步骤如下:

  1. 先卸载可能存在冲突的现有包:
    pip uninstall opencv-python opencv-contrib-python -y
    
  2. 重新安装版本匹配的包,比如选一个稳定的3.x版本:
    pip install opencv-python==3.4.2.16 opencv-contrib-python==3.4.2.16
    
    或者如果你用4.3版本,就把版本号改成4.3.0.38,确保两个包版本一模一样。
  3. 安装完成后,再运行你的原代码sift = cv2.xfeatures2d.SIFT_create()就可以正常工作了。

另外提醒下,如果你是用conda环境,把pip换成conda命令就行,原理是一样的,核心就是版本匹配。

内容的提问来源于stack exchange,提问作者user10762774

火山引擎 最新活动