我该如何通过Conda安装Python的OpenCV?

309
我是一名有用的助手,可以为您翻译文本。
我正在尝试通过Anaconda安装Python的OpenCV,但似乎无法解决这个问题。
我已经尝试过。
conda install opencv
conda install cv2

我也尝试过搜索

conda search cv

没戏。我发现这里列出了包括opencv在内的软件包:

http://docs.continuum.io/anaconda/pkgs.html

在运行conda info命令后,我注意到我的版本是3.4.1,但是我似乎找不到关于这个版本的任何信息。我对此感到非常困惑。
我是否漏掉了一些非常明显的东西?如果opencv可用于先前版本的Anaconda,则为什么它不会在更新的版本中可用?为什么那个链接只向我展示了1.9.2版本的文档?

1
当前的OpenCV包装模块被称为cv2。(列表中的第一个是过时的第三方包装器,第三个是过时的C-API包装器,您都不应该使用)-不幸的是,我从未遇到过在Anaconda上成功运行它的人。难道您不能使用常规的Python 2.7吗? - berak
5
Anaconda并不会阻止你使用它与OpenCV一起使用,除了Linux之外,conda安装中并没有包含OpenCV。但是,你可以从这里获取Windows的安装二进制文件:http://www.lfd.uci.edu/~gohlke/pythonlibs/。 - M4rtini
5
可以直接从标准的代码库安装OpenCV:conda install opencv - fviktor
1
大家好。我发现使用Anaconda Cloud存储库的其他所有者也可以正常工作。例如,使用conda-forge而不是menpo的opencv。以下是列出了几个OpenCV及其相应操作系统的所有者:https://anaconda.org/search?q=openCV 我运行了以下代码: conda install -c conda-forge opencv=3.2.0 祝你好运! - RaúlMG
4
使用Anaconda 3,在Anaconda提示符上键入“conda install opencv”命令。这将安装版本为3.4.1的OpenCV以及其所需的各种依赖包。我自己尝试过该方法,而且不需要进行任何自定义安装设置。 - ambar mishra
显示剩余8条评论
43个回答

271
你可以使用binstar进行安装:
conda install -c menpo opencv

13
我尝试使用这种方法安装OpenCV,但遇到了一个问题,当我输入import cv时出现错误DLL load failed: The specified module could not be found。我想知道你在安装过程中是否也遇到了这个问题。 - cogle
5
在 Windows 7 上对我有用。 - waldol1
1
嗯,虽然这样做不能让我 import cv2.cv(我是不是漏掉了什么显而易见的东西?) - Andy Hayden
2
这在OSX 10.10.5上与conda 13.8.4一起使用。唯一的“小”问题是它需要numpy 1.10.1,这是可以接受的,但我运行了conda update --all,一些库需要降级到1.9才能运行。 - mercergeoinfo
2
这在Win10 64位上的Anaconda 2.7中运行良好,而conda install opencv则不行。 - Anton Schwaighofer
显示剩余16条评论

153

conda install opencv目前在UNIX/python2上对我有效。在查阅其他解决方案之前,值得尝试。


3
对我来说,在Ubuntu 14.04上已经试验过了,谢谢! :-) - Rafael_Espericueta
11
不支持Python 3.4版本:错误:无法满足包规范。 - Andy Hayden
7
在Ubuntu 14.04上使用Anaconda 2.7和PyCharm,仅使用“conda install opencv”命令安装OpenCV后,当我使用'cv2.imshow('name',img)'函数时,会出现错误提示,提示需要使用“GTK+ 2.x”支持重新构建该软件包,因此似乎对于在ubuntu中使用PyCharm作为IDE的人并不实用。 - Phil Glau
1
conda search opencv 对你有返回结果吗?对我来说没有。 - user3731622
2
适用于Windows 10,Python 3.7。您可能需要以管理员权限运行cmd。 - Vivek Subramanian
显示剩余9条评论

128

这对我很有效(在Ubuntu和conda 3.18.3上):

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

当我运行以下命令时,出现了上面显示的命令:

anaconda show menpo/opencv3

这是输出结果:

To install this package with conda run:
     conda install --channel https://conda.anaconda.org/menpo opencv3

我在Python中测试了以下内容,没有出现错误:

>>> import cv2
>>>

6
在尝试了许多其他安装opencv3的方法后,我最终在OSX 10.10.5上成功了。 - Merlin
2
先生,您上去了!这适用于Ubuntu 14.04,带有Python 3.5的Anaconda。 - Aruna Tebel
3
在Windows 10上对我也起作用了。 - dshgna
4
有趣的是,这将安装一个大约2.3 MB大小的cv2.pyd文件。但是,如果您前往openCV网站下载二进制文件,则从那里获取的opencv2.pyd文件大小超过44MB。此外,这两个pyd文件都通过了“导入”测试。所以我想知道为什么Anaconda库要小得多? - aquagremlin
3
你为什么在安装 opencv3,但导入的是 cv2?为什么版本号不同? - HelloGoodbye
显示剩余9条评论

84

我已经总结了完全可用的解决方案,OpenCV-Python - 如何将 OpenCV-Python 包安装到 Anaconda (Windows)。尽管如此,我还是复制并粘贴了此帖子中的重要部分。


撰写本文时,我使用的是 Windows 8.1、64 位计算机、Anaconda/ Python 2.x(请查看下面的注释——这也适用于 Windows 10 和可能的 Python 3.x)。

  • 注1:如@great_raisin所提到的,感谢他在评论区中指出,这个解决方案似乎也适用于 Windows 10。

  • 注2:这很可能对 Anaconda/Python 3.x 也适用。如果您正在使用 Windows 10 和 Anaconda/Python 3.x,并且这个解决方案起作用,请在下面添加一条评论。谢谢!(更新:请参考评论“在Windows 10上工作”)

  • 注3:根据您使用的是 Python 2.x 还是 3.x,在代码片段中调整 print 语句即可。例如,在 Python 3.x 中,它将是 print("hello"),而在 Python 2.x 中,则是 print "hello"

简短版说明

为使 OpenCV 完全与 Anaconda(和 Spyder IDE)配合使用,我们需要执行以下步骤:

  1. 官方 OpenCV 网站下载 OpenCV 包
  2. cv2.pyd 复制并粘贴到 Anaconda 的 site-packages 目录中。
  3. 设置用户环境变量,以便 Anaconda 知道在哪里找到 FFMPEG 工具。
  4. 进行一些测试,以确认 OpenCV 和 FFMPEG 正常工作。

(继续阅读详细的说明...)

先决条件

安装 Anaconda

Anaconda 本质上是一个打包了许多有用的包(如 NumPy、Pandas 和 IPython Notebook 等)的 Python IDE。似乎在科学界随处都被推荐。请访问Anaconda安装它。

将 OpenCV-Python 安装到 Anaconda

注意事项:最初我尝试安装binstar.org提供的OpenCV软件包,但该方法不包括FFMPEG编解码器 - 也就是说,您可能能够使用OpenCV,但无法处理视频。

下面的指令对我有效,灵感来自于这个OpenCV YouTube 视频。到目前为止,我已经在我的台式机和笔记本电脑上都成功地使用了它,这两台机器都是64位的Windows 8.1。

下载 OpenCV 软件包

首先,去官方 OpenCV 网站下载完整的 OpenCV 软件包。选择你喜欢的版本(2.x 或 3.x)。 我使用的是 Python 2.x 和 OpenCV 3.x - 主要是因为这是OpenCV-Python 教程的设置/基础。

在我的情况下,我将该软件包(实质上是一个文件夹)直接解压到了 C 盘 (C:\opencv)。

复制并粘贴 cv2.pyd 文件

Anaconda 网站包目录(例如,在我的情况下,路径为C:\Users\Johnny\Anaconda\Lib\site-packages)包含您可以导入的 Python 包。我们的目标是将 cv2.pyd 文件复制并粘贴到此目录中(这样我们就可以在Python代码中使用 import cv2)。

要做到这一点,复制 cv2.pyd 文件...

从这个 OpenCV 目录中(开头部分可能与您的机器略有不同)。对于 Python 3.x,我猜只需要相应地将2.x更改为3.x即可。

# Python 2.7 and 32-bit machine:
C:\opencv\build\python\2.7\x84

# Python 2.7 and 64-bit machine:
C:\opencv\build\python\2.7\x64

到这个Anaconda目录(在您的机器上开头可能略有不同):

C:\Users\Johnny\Anaconda\Lib\site-packages

完成此步骤后,我们现在可以在Python代码中使用import cv2。但是,我们仍需要做一些额外的工作来使FFMPEG(视频编解码器)正常工作(以便我们能够处理视频等操作)。

设置环境变量

右键单击“我的电脑”(或Windows 8.1上的“此PC”)→左键单击属性→左键单击“高级”选项卡→左键单击“环境变量…”按钮。

添加一个新的用户变量,指向OpenCV(32位系统选择x86,64位系统选择x64)。我目前使用的是64位机器。

| 32-bit or 64 bit machine? | Variable     | Value                                |
|---------------------------|--------------|--------------------------------------|
| 32-bit                    | `OPENCV_DIR` | `C:\opencv\build\x86\vc12`           |
| 64-bit                    | `OPENCV_DIR` | `C:\opencv\build\x64\vc12`           |
%OPENCV_DIR%是OpenCV的安装路径,将%OPENCV_DIR%\bin添加到用户变量PATH中。

例如,我的PATH用户变量如下所示...

之前:

C:\Users\Johnny\Anaconda;C:\Users\Johnny\Anaconda\Scripts

之后:

C:\Users\Johnny\Anaconda;C:\Users\Johnny\Anaconda\Scripts;%OPENCV_DIR%\bin

我们完成了!FFMPEG已准备好使用!

确认测试

我们需要测试是否可以在Anaconda中执行以下操作(通过Spyder IDE):

  • 导入OpenCV包
  • 使用FFMPEG实用程序(读取/写入/处理视频)

测试1:我们能否导入OpenCV?

为了确认Anaconda现在能够导入OpenCV-Python包(即cv2),请在IPython控制台中输入以下内容:

import cv2
print cv2.__version__

如果包cv2已经成功导入且无任何错误,并打印出了cv2的版本,那么我们就可以开始了!以下是一个快照:

import-cv2-ok-in-anaconda-python-2.png
(来源: mathalope.co.uk)

测试2:我们能使用FFMPEG编解码器吗?

在目录中放置一个样本视频文件input_video.mp4。我们想要测试是否能够:

  • 读取这个.mp4视频文件,并且
  • 写出一个新的视频文件(可以是.avi.mp4等)

为此,我们需要一个测试Python代码,将其命名为test.py。将其放置在与样本input_video.mp4文件相同的目录中。

下面是test.py的样例内容(我列出了较新和较旧的版本代码 - 请告诉我们哪个版本适用 / 不适用于您!)。

(较新的版本...)

import cv2
cap = cv2.VideoCapture("input_video.mp4")
print cap.isOpened()   # True = read video successfully. False - fail to read video.

fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter("output_video.avi", fourcc, 20.0, (640, 360))
print out.isOpened()  # True = write out video successfully. False - fail to write out video.

cap.release()
out.release()
(或者旧版本...)
import cv2
cv2.VideoCapture("input_video.mp4")
print cv2.isOpened()   # True = read video successfully. False - fail to read video.

fourcc = cv2.cv.CV_FOURCC(*'XVID')
out = cv2.VideoWriter("output_video.avi",fourcc, 20.0, (640,360))
print out.isOpened()  # True = write out video successfully. False - fail to write out video.

cap.release()
out.release()

这个测试非常重要。如果你想处理视频文件,你需要确保Anaconda / Spyder IDE可以使用FFMPEG(视频编解码器)。我花了几天时间才让它工作起来。但我希望你能用更少的时间做到! :)

注意:当使用Anaconda Spyder IDE时还有一个非常重要的提示。确保检查当前的工作目录(CWD)!!!

结论

要在Anaconda(和Spyder IDE)中充分使用OpenCV,我们需要:

  1. 官方OpenCV网站下载OpenCV包
  2. cv2.pyd复制粘贴到Anaconda网站包目录中。
  3. 设置用户环境变量,以便Anaconda知道如何找到FFMPEG实用程序。
  4. 进行一些测试,确认OpenCV和FFMPEG现在正在工作。

祝你好运!


5
太棒了!请注意,如果您正在使用conda环境,则应将cv2.pyd添加到环境的site-packages文件夹中(例如C:\ Users \ cod3monk3y \ Anaconda \ envs \ foo \ Lib \ site-packages \ cv2.pyd)。还值得注意的是,.pyd文件只是一个Windows DLL,具有特定的接口,可以与Python很好地配合使用。 - cod3monk3y
1
如果我可以更高兴,那就太好了。我只想补充一点,如果你已经安装了Python,请卸载它,因为Conda有自己的Python。 - Mickey Perlstein
1
谢谢!还有一个建议的测试让我花了一些时间才弄清楚。在确认视频可以打开后,我想确认我可以将第100帧作为数组提取出来。在openCV 2.4.9中,此命令为cap.set(cv2.cv.CV_CAP_PROP_POS_FRAMES, 100)。在openCV 3.2.0中,相应的命令已更改为cap.set(cv2.CAP_PROP_POS_FRAMES, 100)。 - ollerend
1
谢谢您先生提供这个非常棒的并且解释得很清楚的答案。您让许多新手的生活变得更加容易了! - Ibrahim Amer
2
这是如何在不使用conda的情况下安装OpenCV。 - john k
显示剩余6条评论

31

看起来你链接的页面似乎不再包含opencv了。(很有趣,我还记得以前它曾经被包括在内。)

无论如何,将OpenCV安装到Anaconda中,虽然不能通过conda进行安装,但非常简单。你只需要下载一个文件。

  1. https://opencv.org/releases/下载并解压OpenCV。
  2. 从解压缩的文件夹中,复制从提取的目录中的文件:opencv/build/python/2.7/(根据你的Anaconda版本选择x86或x64)/cv2.pyd 到你的Anaconda site-packages目录,例如C:\Anaconda\Lib\site-packages
  3. 为使opencv中的FFmpeg正常工作,您需要将FFmpeg所在的目录添加到路径中(例如opencv/sources/3rdparty/ffmpeg)。然后在该文件夹中找到DLL文件(例如opencv_ffmpeg_64.dll),并将其复制或重命名为包括您正在安装的opencv版本的文件名,(例如2.4.9的opencv_ffmpeg249_64)。

现在在Python提示符下,您应该能够输入“import cv2”……要验证是否有效,请输入“print cv2.__version__”,它应该打印出您下载的OpenCV版本。


7
有人还创建了一个binstar包,你现在可以通过Conda下载它:https://binstar.org/menpo/opencv/files。 - Ivo Flipse
你能告诉我如何通过conda下载opencv吗?我已经从上面的链接中下载了Mac软件包,接下来该怎么做? - venuktan
4
@eculeus,你可以再详细介绍一下如何验证FFmpeg吗?我能够读取我的网络摄像头,但是在读/写视频文件时遇到了麻烦。我查看了目录3rdparty/ffmpeg并将dll重命名为:opencv_ffmpeg300_64.dll。你提到FFmpeg应该在路径中,你是指windows PATH还是Python的sys.path路径? - Paul
请注意,您可能需要导入sys,然后执行sys.path.append("C:/Anaconda/Lib/site-packages")。以上内容突然停止工作,这个解决方案来自于这里:https://dev59.com/Q2Ij5IYBdhLWcg3wy4DH - user391339
1
对我有用。谢谢。 - Indrajit
显示剩余2条评论

31

3
menpo仓库不再受支持,https://github.com/menpo/conda-opencv3;现在建议使用conda-forge https://github.com/conda-forge/opencv-feedstock。 - michael
1
如果在Ubuntu 18.04下使用Miniconda,如果安装了最新的Anaconda包,"解决环境"阶段会花费很长时间。创建一个干净的Miniconda环境而不是Anaconda批量(例如conda create --name abc python=2.7)。 - Oliver Zendel

25

2019年5月,针对MacOS的答案如下:

conda update freetype
conda install opencv -c conda-forge

这将更新libfreetype.6.dylib以兼容24.0.0,并安装OpenCV 4.1.0。


这会安装 "cv2" 吗? - Suisse
@AdamErickson 这是在以管理员身份运行的Anaconda提示符中吗? - mLstudent33
2
@mLstudent33 此命令在Bash中运行,Anaconda安装在本地文件夹中,因此不需要使用sudo。除非您管理多个用户的系统范围安装,否则我建议避免将conda作为sudo运行。在这种情况下,我通常会小心激活conda环境,然后从该环境的/bin文件夹中使用sudo ./conda ...进行额外的预防措施,因为即使使用-E标志,sudo也会更改您的PATH - Adam Erickson
@AdamErickson 这对我有用,但我得到的是v3.4.2。有什么想法吗? - Brett
1
更新如下:我想我已经安装了早期版本的 libopencv。在删除它后,运行 conda install opencv 安装了最新版本。 - Brett

21
以下安装来自于conda-forgeopencv(注:在Windows上测试过)。
conda config --add channels conda-forge
conda install opencv

5
Menpo代码库不再得到支持,https://github.com/menpo/conda-opencv3;现在建议使用conda-forge https://github.com/conda-forge/opencv-feedstock。 - michael
3
@michael,目前conda-forge是正确的答案,但它几乎被埋在过时的答案中。 :( - eric
我已经更新了这个答案,删除了menpo的部分,并根据conda-forge的说明更新了安装opencv的语法。该答案本身并没有根本性的改变,因为 menpo 只是用于安装“较新”的 opencv3,而我们已经使用 opencv4 了。 - michael

16
在Anaconda中安装OpenCV,需要启动Anaconda命令提示符,并使用以下命令安装OpenCV:
conda install -c https://conda.anaconda.org/menpo opencv3

使用Anaconda Spyder或IPython控制台测试其工作是否正常

import cv2

你也可以使用以下命令来检查已安装的版本:

cv2.__version__

这在我的Win 10,64位系统上运行良好。在Spyder中也可以工作。 - pcomitz
适用于opencv3 -> python[version='2.7.|3.4.|3.5.*']。对于Python 3.7失败。 - Nuhman
@AMC 我没有使用过它。不管怎样,有没有适用于3.7的工作方法? - Nuhman
1
@Nuhman 是的,你可以从官方Anaconda渠道以及conda-forge(这里)获取OpenCV。 - AMC

9
在我的情况下,我使用的是Python 3.9。 我在我的conda环境中执行以下操作,它可以正常工作:
pip install opencv-python==3.4.15.55
pip install opencv-contrib-python==3.4.15.55

在MacOS上使用Python3.9,我不需要限定。我使用了“pip install opencv-python; pip install opencv-contrib-python”。 - Rian Rizvi

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