关于在Conda创建的虚拟环境中安装好OpenCV包后,在Pycharm中依然无法使用且import cv2时报错的问题

news/2024/10/22 8:21:58/

如果你也掉进这个坑里了,请记住opencv-pythonopencv-python!!opencv-python!!!

不要贪图省事直接在Anaconda界面中自动勾选安装libopencv/opencv/py-opencv包,或者在Pycharm中的解释器已包列表界面选择“+”搜素opencv进行安装,因为以上两种方式安装的效果其实是一样的,安装好opencv或者py-opencv包后,在Anaconda和Pycharm中都能看到这两个包,但是导入“cv2”依然是报错的,它们根本不起作用,不知道具体原因。

解决办法pip install opencv-python

在Anaconda Prompt界面下,切换到你的虚拟环境,例如我设置的虚拟环境为OpenCV,然后输入

pip install opencv-python,直到安装成功,如下图:

这样,在Pycharm中就可以正常导入“cv2”不报错了。

同时在Pycharm中解释器的已安装包列表中,也能看到opencv-python,只不过在Anaconda已安装包列表中是看不到的。

以上方法,参考自为什么Anaconda安装了OpenCV,却调用不了它 - 知乎 (zhihu.com)


下面为我的安装环境,以及我范的错误(引以为戒,切勿模仿)。


环境介绍:我安装的Anaconda(22.9.0)和Pycharm(22.2.3社区版),并在Pycharm中创建项目,解释器选择Conda环境下的python解释器。

问题描述:在pycharm中安装opencv,只搜索到以下三个可安装的包,如下图:

在这里点左下角的安装软件包,安装好后,且安装的这两个包,在Anaconda可视化界面中也能看到,如下图:

从上面图中可以到安装的opencv或者py-opencv包的版本为4.6.0,而OpenCV当前最新的版本为5.0.0-pre,4.10.0-dev可能是4系列中的最后一个版本,而4.9.0应该是较为稳定的版本,如下图:

但是,这样以后在Pycharm中仍是报错的,上面安装的三个包根本就不起作用,导入“cv2”依然是报错的,表示没有这个包。

或许这就是个错误的方法,大家千万不要跟我一样偷懒,还是按照网上opencv的安装教程一步一步安装的好。

但是还得说一句:上面这个办法对安装opencv是无效的,但并不一定是没用的,例如安装上面opencv或者py-opencv这个包时,它会自动安装一些基础包或者它需要用到的包,例如Numpy这个包就是原来没有被它们捎带着装上的,而且装上以后就是直接能用的。


http://www.ppmy.cn/news/1459485.html

相关文章

QJ71E71-100 三菱Q系列以太网通信模块

QJ71E71-100 三菱Q系列以太网通信模块 QJ71E71-100以太网模块是PLC侧连接Q系列PLC与本站系统的接口模块,如个人计算机和工作站,也是通过以太网使用TCP/IP或UDP/IP通讯协议在 PLC 之间的接口模块。QJ71E71-100外部连接,QJ71E71-100参数规格,QJ71E71-100用…

matlab绘制时间序列图,横坐标轴如何标注为月-日

Excel表格中有类似于如下 年月日对应的数据 导入 matlab中,为数值矩阵;了解该表格中的时间跨度为从2021年1月2日至2021年12月31日,中间没有缺失,绘图代码: % clear; timespan1[20210102 20211231]; datenn1datenum(da…

机器人规划控制——工程化——心得日记-20240510

近一周一直在调试机器人过迷宫形路线,这种路线特点是障碍物之间距离较小且障碍物也比较多,基本机器人会一直发生干涉检测,请求全局路径,然后再控制机器人前进。 遇到一个特别有趣的问题,当然最后查出来原因也感觉比较…

flutter开发实战-GetX响应式状态管理使用

flutter开发实战-GetX响应式状态管理使用 GetX是一个简单的响应式状态管理解决方案。GetX是Flutter的一款超轻、功能强大的解决方案。它将高性能状态管理、智能依赖注入和路由管理快速而实用地结合在一起。这里简单使用一下GetX 一、引入GetX 在工程的pubspec.yaml中引入插件…

地址传递,使用uint8的数组解析int, short等类型

当需要使用UINT8去解析所传入的数组类型的时候,我们需要使用到传递地址,再通过数组的形式,通过较小的类型去以数组的类型来解析大的类型。 char 类型是1个字节, 占8位, 使用十六进制表示,如:0x…

Java面试题:请解释Java中的永久代(PermGen)和元空间(Metaspace)的区别

在Java虚拟机(JVM)的发展历程中,永久代(PermGen)和元空间(Metaspace)都是用于存储类元数据的内存区域,但它们在实现和行为上有所不同。以下是它们之间的主要区别: 实现&a…

js设计模式--观察者模式

概述 观察者模式用于在对象之间建立 一对多 的依赖关系,当一个对象状态发生变化时,它的所有依赖者(观察者)都会收到通知并自动更新。在js中,观察者模式通常由两个角色组成:主体(Subject&#x…

MFC中关于CMutex类的学习

MFC中关于CMutex类的学习 最近在项目中要实现两个线程之间的同步,MFC中提供了4个类,分别是CMutex(互斥量)、CCriticalSection(临界区)、CEvent(事件对象)、CSemaphore(信号量)。有关这4个类的说明,大家可以参考微软官方文档: CM…