文章目录

  • 1. 问题
  • 2. 分析
  • 3.解决
  • 4. 其它尝试
  • 5. 总结

1. 问题

OpenCV安装成功,但是无法导入 cv2 的指定模块 – Ubuntu Anaconda 环境,具体是安装好 opencv-python 4.1.0.25 后,准备导入模块 cv2.ximgproc.guideFilter 时,仍然报错,

ModuleNotFoundError: No module named ‘cv2.ximgproc’

并且已经安装好 opencv-contrib-python 4.1.0.25 。

2. 分析

在翻阅别人的博客,大概都是认为问题出在了 安装了多个版本的 opencv-python 和 opencv-contrib-python,CV2的库冲突,其中 opencv-contrib-python 是 opencv-python 的拓展版本,有opencv 的一些附加功能,是对 opencv 的补充。

他们的解决方案大致是先将所有的 opencv-python 和 opencv-contrib-python 先卸载,再只安装 opencv-contrib-python 和 opencv-python ,就可以解决他们的问题。

pip uninstall opencv-contrib-python opencv-python

注意,这里安装的 opencv-contrib-python 和 opencv-python 一般是你所需的指定版本,一般先安装 opencv-python,再安装 opencv-contrib-python。一般使用 pip install XXX 安装,conda install XXX 只能安装 opencv-python ,无法安装 opencv-contrib-python 。

pip install opencv-contrib-python==4.1.0.25

或者

pip install opencv-python==4.1.0.25
pip install opencv-contrib-python==4.1.0.25

但是在我创建的 conda 虚拟环境中,这种方法依旧没能解决我遇到的问题。即使使用 conda list 查看已经安装好了指定版本的 opencv-python 和 opencv-contrib-python,依旧无法导入需要的模块 cv2.ximgproc.guideFilter 。

其中,模块 cv2.ximgproc.guideFilter 用于导向滤波。

参考链接:
1
2
3

3.解决

有博客认为:pip 安装和 conda 安装的 python 依赖包有不匹配的地方,所以建议采用离线的方式安装 opencv-python 和 opencv-contrib-python 的 .whl 文件 。

首先在卸载完成 opencv-python 和 opencv-contrib-python 以后,去 opencv 的镜像文件网站下载我们需要的版本,在 https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple/opencv-python/ 下载所需的 opencv-contrib-python ,在 https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple/opencv-python/ 下载所需的 opencv-python ,



再离线安装,

pip install /home/xxx/opencv_contrib_python-4.1.0.25-cp36-cp36m-manylinux1_x86_64.whl
pip install /home/xxx/opencv_python-4.1.0.25-cp36-cp36m-manylinux1_x86_64.whl

其中要注意的是 cp36 表示 python 环境是 3.6 版本,manyliunx 表示系统平台内核是基于 liunx 。


很遗憾,这种方法依旧还是未能成功导入模块 cv2.ximgproc 。在我创建的 conda 虚拟环境中,使用 conda list 查看,即使显示已经安装好了指定版本的 opencv-python 和 opencv-contrib-python,依据无法导入需要的模块 cv2.ximgproc.guideFilter 。


最后发现了问题所在,创建的虚拟环境下对应的 opencv-python 和 opencv-contrib-python 安装包文件夹下竟然基本是空,而其它依赖包安装文件夹下有非常多的 .py 文件。

先定位 opencv-python 依赖包安装的文件夹,

pip show opencv-python

显示自己创建的虚拟换环境中,opencv-python 所在的安装路径为
/home/XXX/anaconda3/envs/自己创建的虚拟环境名/python3.6/site-packages/cv2/

这说明,表面上使用 conda list 显示是 安装了 opencv-python,但是实际上并没有安装成功,只是在虚拟环境下存在相关的安装文件夹,但是里面并没有文件。我知道 conda 是可以直接复制虚拟环境中依赖包的安装文件来进行移植环境的,于是我直接在之前安装过 opencv-python 和 opencv-contrib-python 的另外的虚拟环境中复制了opencv-python 和 opencv-contrib-python 的安装文件到我现在需要的用虚拟环境中,解决了我遇到的问题,我知道这种解决方式治标不治本,但没有找到更好的解决方法,比如 一条类似 pip install XXX 的指令就解决我上面遇到的问题。希望路过的大佬能帮我指出问题的根本所在,这样可以让遇到了和我一样问题的其他人能少浪费时间。

我现在个人感觉问题还是出在使用 pip 语句和 conda 语句安装依赖包时,版本发生了冲突,尽管离线方式安装也没成功。

本文所用 conda 版本是 4.5.11

conda --version

4. 其它尝试

看到有别的博客是通过直接在 opencv 的 Github 上面源码安装,我这里没试,感觉很麻烦,大家可以试试能不能行。

另外,重新创建了一个虚拟环境,python 版本是 3.6 ,只安装 opencv-python 和 opencv-contrib-python,也是不行,在相关依赖包的安装文件夹下是空的,没有相关的 .py 文件。

最后我再试一试使用 conda install XXX 命令,能否安装上。


在创建的新的虚拟环境下,conda 命令安装 opencv

conda install -c https://conda.anaconda.org/menpo opencv3

或者安装最新版本的opencv ,上面语句安装的是 opencv 3.x.x版本,下面是是安装 4.X.X 版本。

conda install -c https://conda.anaconda.org/menpo opencv

查找你需要的版本,

conda search opencv -c conda-forge

或者通过以下方式查找 anaconda 官网中所有版本的 opencv 。

conda search -c https://conda.anaconda.org/menpo opencv*

很遗憾,虽然安装上了安装包 opencv ,能导入 cv2.ximgproc 模块, 但是还是没能跑同代码,是 opencv 的版本不对。anaconda 官网的 opencv 版本有限,我需要的是 opencv 4.X.X 的版本,我创建的虚拟环境的 python 是 3.6 版本。可是 anaconda 官网的 opencv 4.X.X python 需要 大于或等于 3.7 。所以不管是用 conda install -c https://conda.anaconda.org/menpo opencv 还是 conda install -c https://conda.anaconda.org/menpo opencv3 ,anaconda 给我匹配的可以安装的最新版本的 opencv 版本是 3.4.2

希望我上面的环境配置过程,能帮到屏幕前的你。


更正:
1、上面提到的 cv2.ximgproc.guideFilter 不是一个模块 。 cv2.ximgproc 是一个模块,guideFilter 是该模块的一个函数。
2、 conda 是安装 opencv3 或者 opencv ,不是安装 opencv-python 和 opencv-contrib-python 。


5. 总结

最后总算是实现了一键安装 opencv ,

pip install opencv-python

或者

conda install opencv

一般,上述语句安装,都是安装的匹配你 python 版本的 opencv 最新版本。

上述问题主要在于:conda 创建的虚拟环境中 python 版本;你所需的 opencv 版本;还有 conda 和 pip 安装匹配的问题。


首先,我们使用 conda 创建虚拟环境,是希望通过 anaconda 来统一管理各个依赖包,包括不同依赖包之间的版本匹配。

然后,存在一个问题就是,conda 中可以下载到的依赖包可能有限,比如 pip 可以下到几乎所有的 python 依赖包,但是 conda 中并没有那么多的依赖包(当然也是很多的,只有个别的包 pip 有,但是 conda 没有),所以 你在 conda 创建的虚拟环境中 使用 pip install xxx 时需要特别注意这一点,即使你 pip install opencv-python == 4.1.0.25 ,但是 conda 里面并没有这个版本,所以导致 你使用 pip install opencv-python ==4.1.0.25 安装时,相关安装文件夹下是空的,但是你使用 conda list 显示安装了 opencv-python,其实并没有安装成功。

还有就是,在你使用 conda install opencv 安装时,比如 你 创建 的虚拟环境 的 python 版本为 3.6 ,那么 就不允许你下载 4.1.0.25 版本的 opencv ,python 版本为 3.6 ,那么你能在 conda 中下载到的 最新的 opencv 版本是 3.4.2 。你如果要下载 4.1.0.25 版本的 opencv , 那么 你创建虚拟环境时应该 将 python 版本设置为大于 3.7。

最后,还有一点需要注意的是,使用 pip install opencv-python==指定版本 时要慎重,首先你要确定 anaconda 确实有你指定的版本存在,你可以通过 conda search -c https://conda.anaconda.org/menpo opencv* 来查询,如果你创建的虚拟环境中的 python 版本 和 你指定的 opencv-python 版本不匹配则会出现 安装的是空文件的情况,并不会报错(很难让人发现问题所在),虽然 conda list 还会显示 你安装了 你指定的 opencv-python 版本,实际是你安装过,但并没有成功。

如果 你是使用 conda install opencv-python==指定版本,那么要是 conda 中没有你指定的版本,则会直接报错,如果有指定版本,则会安装 和你的 python 版本匹配的最新的 opencv 版本。这个时候你还要考虑 这个最新版本 的 opencv 是否是所需的,比如 给你安装的是 最新版本的 opencv 4.5.5 ,但是 你实际需要的是 3.4.2 版本,你在使用 opencv 时,可能会由于版本功能差异导致报错,其实并不是代码的问题,只是 opencv 版本不匹配导致。

希望能解决你在安装 opencv 时遇到的问题。


参考链接:
1
2
3
4
5
6
7
8
9

OpenCV安装成功,但是无法导入 cv2 的指定模块 -- Ubuntu Anaconda 环境一键安装 opencv相关推荐

  1. MathType 如何安装成功以及如何导入word

    MathType 如何安装成功以及如何导入word (一)安装office2016 (二)安装MathType6.9 (三)MathType使用 (四)导入word 突发奇想项安装MathType,于 ...

  2. Ubuntu开发环境配置--- 安装chrome浏览器

    Ubuntu开发环境配置--- 安装chrome浏览器 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.c ...

  3. java一键_Java环境安装-Java环境一键安装下载免安装版-西西软件下载

    Java环境一键安装,一键安装包,安装Java环境,无需用户手动安装操作,非常便利,由论坛大神整合,双击运行程序可一键配置环境,可以根据需求来进行选择.本次带来Java环境一键安装工具下载,需要配置J ...

  4. 青龙依赖环境一键安装部署

    青龙依赖环境一键安装部署 青龙安装教程 没服务器的先自行购买,腾讯云2H4G8M首年70–点击购买 QQ交流:1014549449 --------------点击跳转 新版本的青龙(2.10.2+ ...

  5. 安装完Tensorflow却找不到指定模块

    安装完Tensorflow,找不到指定模块,ImportError: DLL load failed问题解决办法. 摘要: 这篇blog将会提供几种解决方案,都是我踩过的坑,但是都一一解决了,希望对大 ...

  6. Anaconda环境下安装opencv

    问题: anaconda环境下运行jupyter里面的代码 里面需要调用cv2包. 之前习惯用pip install 安装包 我就习惯性的使用 pip install opencv-python 但是 ...

  7. linux没有图形界面opcv,关于Linux/ubuntu的环境下安装OpenCV并配置Clion【全套攻略】及关于'Opencv'file not found 的问题...

    1.如何在Linux/ubuntu配置OpenCV 1.1 :进入OpenCV官网下载:(也可进入git Hub 在终端Clone) 等待下载完成 1.2:安装OpenCV: 笔者下载的是Opencv ...

  8. amd显卡在Linux上安装,AMD上最新的ATI显卡驱动在Ubuntu 8.04上安装成功

    为什么 AMD 上最新的 ATI 显卡驱动在Ubuntu 8.04上不能安装 ati-driver-installer-8-6-x86.x86_64 真的搞不懂! 下的时候没注意看 Install I ...

  9. 如何在anaconda环境下安装tensorflow/pytorch/keras等

    第一种方法:在conda 环境中安装 第一步:找到 Anaconda Navigator 第二步:打开,找到环境 点击creat(+)按钮,输入需要的环境,之后点击另外一个creat 安装其他的库步骤 ...

最新文章

  1. 2010年12月blog汇总:敏捷个人
  2. 经典算法题每日演练——第十九题 双端队列
  3. 轻松搭建基于 SpringBoot Vue 的 Web 商城应用
  4. Linux cut用法
  5. LeetCode Hot100 ---- 回溯算法专题
  6. 寻找随机的错误-一个真实的故事
  7. 最优化学习笔记(十五)——拟牛顿法(1)
  8. 新东方:俞敏洪个人博客文章不代表公司观点 半年报即将发布
  9. 12月江苏计算机考试报名入口,江苏2019年12月计算机等级报名时间丨报名系统
  10. 【开源】OSharp3.0框架解说系列(6.2):操作日志与数据日志
  11. mysqls为node.js而编写的sql语句生成插件 crud for mysql.
  12. JavaScript常见设计模式梳理
  13. Java调用MQ队列
  14. 卸载掉360之后无法删除360safe文件夹解决办法!
  15. GPS经纬度一直不会改变的解决方法
  16. webrtc---桌面共享原理
  17. html5流媒体多浏览器,PearPlayer流媒体播放器 v2.5.6(开源HTML5流媒体播放框架)
  18. 用JAVA制作抓老鹰游戏_Java制作最难练手速游戏,Faker都坚持不了一分钟
  19. 一位美国教授给研究生的怎样记读书笔记的建议(中文总结)
  20. laravel软连接访问文件失效解决办法php artisan storage:link

热门文章

  1. echarts地图可视化 中国地图及各省级js文件分享
  2. unity引用动态库的错误解决办法
  3. ev录屏嵌入摄像头花屏问题
  4. 怎么才能做好采购管理?
  5. lua 之 全局变量
  6. Vue PDF文件预览打印vue-pdf
  7. 前端解决表情符号乱码问题(前端处理表情符号编码)@令狐张豪
  8. crc8 c语言代码,C的CRC8校验的源代码
  9. Cocos状态机与缓动系统
  10. 基于java的文本/论文查重