对于module ‘cv2.cv2’ has no attribute 'xfeatures2d’问题的解决

在opencv库中调用ORB、SIFT和SURF算法进行特征匹配时出现module ‘cv2.cv2’ has no attribute 'xfeatures2d报错,看了多篇博文之后,总结如下。

博主自己的环境配置:windows10 python3.7.9 opencv-python4.5.1.45 opencv-contrib-python4.5.1.48

1.ORB算法

ORB算法可以直接在上述环境中调用,调用命令为:

cv2.ORB_create()

2.SIFT算法的报错处理

参考博文:https://blog.csdn.net/Gordon_Wei/article/details/88920411
opencv4.4.0以上的版本就可以直接调用SIFT算法了,只需要对调用命令做如下调整:
我们只需要将:

cv2.xfeatures2d.SIFT_create()

改为:

cv2.SIFT_create()

做完如上调整后,在博主自己的环境中运行正常。

3.SURF算法的报错处理

需要对opencv降级,降到opencv-python3.4.2.16 opencv-contrib-python3.4.2.16,博主使用的是pycharm,所以直接在pycharm里处理,具体操作如下:

1)首先在pychram->file->Settings->Python Interpreter里卸载原来版本的opencv
在这里插入图片描述先选中要卸载的包,然后点击右上角的减号进行卸载,按照上述步骤可将opencv-python4.5.1.45 opencv-contrib-python4.5.1.48卸载。
2)opencv包的安装
在这里插入图片描述点击加号,进入安装界面。

在这里插入图片描述按照上述步骤安装好opencv-python3.4.2.16和opencv-contrib-python3.4.2.16,二者安装好之后即可正常使用SURF算法
此时的环境配置应该是:windows10 python3.7.9 opencv-python3.4.2.16 opencv-contrib-python3.4.2.16

3)SURF的调用命令

cv2.xfeatures2d_SURF.create()

4.总结

按照上述方法配置好的环境,可以在python中正常调用ORB、SIFT和SURF算法不会产生报错。
特别提醒在opencv降级后,ORB和SIFT算法可能无法使用,要想使用的话,需要将opencv升级到4.4.0以上版本。
尽可能使用Python3.7及以下版本,因为opencv-python3.4.2.16等库,没有适配Python3.8以上的版本,如果使用Python3.8以上版本,可能导致opencv-python3.4.2.16安装不上。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐