如何通过Conda安装Python OpenCV?

314 投票
43 回答
994049 浏览
提问于 2025-04-18 03:02

我正在尝试通过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版本的文档?

43 个回答

33

你可以通过在Anaconda命令提示符中运行以下命令来安装OpenCV:

conda config --add channels conda-forge

conda install libopencv opencv py-opencv

来源:

https://github.com/conda-forge/opencv-feedstock

85

我总结了我现在完全可用的解决方案,OpenCV-Python - 如何在Anaconda(Windows)上安装OpenCV-Python包。不过我把重要的部分复制粘贴到了这篇文章里。


写这篇文章时,我使用的是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"

简而言之

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

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

(继续阅读以获取详细说明...)

前提条件

安装Anaconda

Anaconda基本上是一个打包好的Python IDE,里面包含了很多有用的包,比如NumPy、Pandas、IPython Notebook等。它在科学界几乎是人人推荐的。可以去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的site-packages目录(例如,我的路径是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中是“此电脑”)→ 左键点击属性 → 左键点击“高级”选项卡 → 左键点击“环境变量...”按钮。

添加一个新的用户变量,指向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%\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的site-packages目录。
  3. 设置用户环境变量,以便Anaconda知道在哪里找到FFMPEG工具。
  4. 进行一些测试以确认OpenCV和FFMPEG现在可以正常工作。

祝你好运!

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
>>>
155

我在UNIX系统和python2上用conda install opencv这个命令安装opencv,效果很好。建议你先试试这个方法,再去找其他解决方案。

272

你可以通过 binstar 来安装它:

conda install -c menpo opencv

撰写回答