无法在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包的版本完全一致,不然很容易出问题。步骤如下:
- 先卸载可能存在冲突的现有包:
pip uninstall opencv-python opencv-contrib-python -y - 重新安装版本匹配的包,比如选一个稳定的3.x版本:
或者如果你用4.3版本,就把版本号改成pip install opencv-python==3.4.2.16 opencv-contrib-python==3.4.2.164.3.0.38,确保两个包版本一模一样。 - 安装完成后,再运行你的原代码
sift = cv2.xfeatures2d.SIFT_create()就可以正常工作了。
另外提醒下,如果你是用conda环境,把pip换成conda命令就行,原理是一样的,核心就是版本匹配。
内容的提问来源于stack exchange,提问作者user10762774




