阿雪的学习记录|python图像拼接(spyder)以及module ‘cv2.cv2‘ has no attribute ‘xfeatures2d‘问题解决

2022/1/20 17:16:09

本文主要是介绍阿雪的学习记录|python图像拼接(spyder)以及module ‘cv2.cv2‘ has no attribute ‘xfeatures2d‘问题解决,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

首先我的环境

Windows10系统
python 3.6.10
spyder 4.1.4
opencv-python 4.3.0.36(我也不知道为啥这个python和cmd里查出来的python版本不一样,呜)
pip 20.1.1(不知道这个相关不相关,应该不相关)

是的,我又开始不务正业了,逛CSDN看到一个图像拼接的帖子,就是这个
就感觉,哇塞,好厉害!这不就是全景拍摄的算法吗!急于求成的我直接复制了他的代码(把他的代码都复制进去,前面加上最最最基础的模块调用就可以:

import cv2
import numpy as np

好了,就可以运行了,运行的时候,首先会出来两张图片单纯的左右拼接,就像美图秀秀那样shai的,这一步用到了这个函数:

np.hstack((img1, img2))

得到了这样的结果:
在这里插入图片描述
是的,我直接用手机拍了我在看这篇博客的场景,这是我的工位,原程序resize了两张图片,被我注释掉了,因为它resize之后图片糊的鸭皮,根本看不出拼接的效果
运行出来这张图片之后,任意按键开始下一个程序,也就是拼接两个图片,用到的函数……好了,代码我没仔细看,反正就是要按下任意按键就可以实现拼接
这时候会出现一个报错:

module 'cv2.cv2' has no attribute 'xfeatures2d'

这个错误出现在代码的这行

sift = cv2.xfeatures2d.SIFT_create()

搜索了很多办法
有说去掉xfeatures2d直接用cv2.SIFT_create()的,试了,不行
有说把opencv和python都降级的,我不想降
也有说要安装opencv-contrib-python的,尝试了安装opencv-contrib-python,由于直接用pip install opencv-contrib-python安装得到的opencv-contrib-python是最新版本,比如我的就是4.几的,所以程序依然会报同样的错

搜索了一轮之后,说要把opencv-python和opencv-contrib-python都降级到3.4.1.15版本,但是我的opencv-python是4.3.0.36的,一下子降那么多……我!不!甘!心!
后来参考了一篇博客底下的一个评论,只需要把opencv-contrib-python降级到3.4.1.15就可以
卸载刚刚安装好的最新版opencv-contrib-python

pip uninstall opencv-contrib-python

安装这个老的可以用的版本

pip install opencv-contrib-python==3.4.1.15

打一把王者就安好了(两分钟)
然后就可以运行了,运行效果还算可以吧,不算理想打算研究研究这个是怎么整的,想试着优化一下,现在可以想到的优化角度大概就是,两张照片衔接重合处做个平滑,但有可能会损失一定的细节信息,但这两张图色泽不同主要是整体光线不一样的问题,如果能自动统一两张图片的自然光滤镜呢,我觉得肯定有大佬早就写出来过相关算法,毕竟早有耳闻连matlab都能p图……
在这里插入图片描述
原文说可以试着把黑色的部分替换成别的颜色什么的,感觉没有这种必要,毕竟黑色部分是无效区域……

在搜索遇到的问题的时候发现SIFT和SURF算法是用于特征点检测的,包括这个图像拼接的功能也是基于特征点检测,然后施展一些魔法,最后实现出来的,感觉其内容和正在研究的东西有一定的相关性,打算研究研究魔法部分的内容

开坑!

每天学一点点,就能少菜一点点,加油( •̀ ω •́ )y



这篇关于阿雪的学习记录|python图像拼接(spyder)以及module ‘cv2.cv2‘ has no attribute ‘xfeatures2d‘问题解决的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程