Jupyter笔记本上的cv2导入错误

19

我想在 Jupyter notebook 上导入 cv2,但出现以下错误:

ImportError: No module named cv2

我感到沮丧,因为我已经为这个简单的问题工作了几个小时。它在Pycharm上可以工作,但在Jupiter notebook上却不能。我已经将cv2安装到Python2.7的站点包中,配置了Jupyter的内核为python2,浏览了文档,但我仍然不知道我缺少了什么?

(我正在使用Windows 10并使用Microsoft Cognitive API,这就是为什么我需要导入此软件包的原因。)

以下是代码:

 <ipython-input-1-9dee6ed62d2d> in <module>()
----> 1 import cv2
      2 cv2.__version__

我应该怎么做才能使这个工作起来?

15个回答

19

你的 Python 路径是否指向正确的位置?检查 Python 寻找模块的位置。在笔记本中尝试:

import os
os.sys.path

cv2 模块是否位于这些目录之一?如果不是,则您的路径可能有误。如果它忽略了安装位置,请将其添加到 Python 路径中。您可以按照此处的说明操作。


谢谢,我在Anaconda2文件中安装了cv2并且它可以正常工作。 - Hiroyuki Nuri
我遇到了同样的问题。必须在活动环境中安装Jupyter,以便将jupyter笔记本链接到已安装opencv2包的环境。 - ElMix

13

我的 Python3 内核中没有安装 openCV,所以我通过激活特定的环境并在命令提示符中运行以下内容进行安装:

pip install opencv-python

如何查找并激活我的环境?

要列出您的所有conda环境,请运行此命令:

conda info --envs
你将会得到类似这样的东西:
ipykernel_py2            D:\Anaconda\envs\ipykernel_py2
root                     D:\Anaconda

接下来,激活报错缺失 cv2 的环境,并运行 pip install opencv-python 命令。

如何激活环境?

只需运行以下命令:

activate env_name

其中env_name是所需的环境(例如,如果您想要访问上面列出的两个环境中的第一个,则可以键入activate ipykernel_py2)。

注意:如果您使用的是Linux,您需要键入source activate env_name


8

打开笔记本电脑,进入菜单栏

kernel -> 更改 kernel -> Python<所需版本>

现在在笔记本电脑中,在选择的环境 kernel 中运行以下命令来安装 opencv2

Python2:

!pip install opencv-python

Python3:

!pip3 install opencv-python


2
对于基于Python 3的Jupyter,请在笔记本内使用更现代的%pip install <package>魔术命令。有关更多信息,请参见我在此页面上的评论(https://dev59.com/t1oT5IYBdhLWcg3w2SQS#70628570)。 - Wayne

7

为了让那些有相同问题的人清楚明白:

默认情况下:Anaconda (jupyter notebook) 安装在你的PC上后,有自己的Python版本和包。

如果你在PC上安装了 Python x.x,并使用该Python版本的包管理器安装了OpenCV或其他包,这并不意味着你的jupyter notebook将能够访问这些之前安装的Python包。它们并不在同一个文件夹中。

为了说明这一点,请打开Windows CMD并输入:

python

然后写:

import os
os.path

您将会获得Python的路径。在我的情况下是(C:\Python35)。

现在打开Anaconda提示符并再次输入相同的命令:

您将会获得Anaconda的Python路径。在我的情况下是(C:\Users\MY_NAME\Anaconda3)。

正如您所看到的,有两个不同的Python路径,因此请确保您在诊断出现 "No module named x" 等错误时的第一步是问自己是否将包安装到了正确的位置!

注意:在Anaconda本身中,您可以创建环境,每个环境都可能安装有不同的软件包,因此还必须确保您处于正确的环境并且它是活动环境。


这是一个很好的解释,但是我从anaconda(ui)本身打开我的终端(Ancaconda,环境,然后选择环境,然后打开终端,在那里我执行pip install),所以如果这个安装进入了错误的环境,我原本认为应该进入正确的环境,那么我该如何避免这个错误?为什么不是所有的包都会出现这种情况? - Manza

6

Binmosa的解释非常到位。作为另一种选择(更容易,但我相信这只是个权宜之计),如果您写:

    import sys
    !{sys.executable} -m pip install opencv-python

直接将模块安装到笔记本中,您将能够在笔记本本身上实际安装该模块。

更详细的解释很有趣且富有启发性。链接:https://jakevdp.github.io/blog/2017/12/05/installing-python-packages-from-jupyter/


3
这是由于opencv库引起的。 请在Anaconda提示符下运行此命令:
conda install -c conda-forge opencv

3

您可以简单地打开 Jupyter Notebook 并在任何一个单元格内写入以下内容:

pip install opencv-python

它将自动安装文件

注意:保持互联网连接开启

然后在下一个单元格中:

import cv2

它将起作用。


1
您需要为Jupyter Notebook安装ipykernel。按照以下步骤进行操作:
python -m virtualenv env
source env/bin/acitivate
pip install opencv-contrib-python
pip install ipykernel --upgrade
python -m ipykernel install --user
jupyter notebook

1

我将 \envs\myenv\Library\bin 添加到了路径变量中,问题得到了解决。


3
简短的回答、琐碎的回答或像这种建议可能行得通的回答,最好放在评论中。 - Ronald
不应该使用virtualenv修改操作系统路径。 - OneCricketeer

1

希望你已经激活了OpenCV安装环境,但在jupyter笔记本中没有运行/导入错误。

如果没有,请运行以下命令并在运行jupyter笔记本之前激活您的环境。

conda activate /Users/prajendr/anaconda3/envs/cvpy39

然后,在jupyter笔记本上使用以下命令检查您的计算机上所有的anaconda环境。

!conda info --envs

输出结果将会类似于 -

enter image description here

尝试在环境中重新安装OpenCV。 输入图像描述

您知道已在此anaconda环境 - cvpy39中安装了OpenCV,路径为“/Users/prajendr/anaconda3/envs/cvpy39/lib/python3.9/site-packages”

然后键入以下命令以查看OpenCV路径是否已导入笔记本电脑:

import os
os.sys.path

enter image description here

你会发现OpenCV路径不在此列表中,因此需要手动导入它。

然后在单元格中输入以下代码集。确保将环境的Python路径更改为您自己的路径。

import sys
path_to_module = "/User/prajendr/anaconda3/envs/cvpy39/lib/python3.9/site-packages/"
sys.path.append(path_to_module)
import cv2

你现在可以将OpenCV导入你的jupyter笔记本中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接