ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2022-01-20 15:58:34  阅读:228  来源: 互联网

标签:no python cv2 opencv pip 拼接 contrib


首先我的环境

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

标签:no,python,cv2,opencv,pip,拼接,contrib
来源: https://blog.csdn.net/baixue1183/article/details/122601645

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有