如何通过Conda安装Python OpenCV?
我正在尝试通过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 个回答
你可以通过在Anaconda命令提示符中运行以下命令来安装OpenCV:
conda config --add channels conda-forge
conda install libopencv opencv py-opencv
来源:
我总结了我现在完全可用的解决方案,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,我们需要:
- 从OpenCV官网下载OpenCV包。
- 将
cv2.pyd
文件复制粘贴到Anaconda的site-packages目录。 - 设置用户环境变量,以便Anaconda知道在哪里找到FFMPEG工具。
- 进行一些测试以确认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
的版本,那么就没问题了!这里有个截图:
(来源: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,我们需要:
- 从OpenCV官网下载OpenCV包。
- 将
cv2.pyd
文件复制粘贴到Anaconda的site-packages目录。 - 设置用户环境变量,以便Anaconda知道在哪里找到FFMPEG工具。
- 进行一些测试以确认OpenCV和FFMPEG现在可以正常工作。
祝你好运!
这个方法对我有效(在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
>>>
我在UNIX系统和python2上用conda install opencv
这个命令安装opencv,效果很好。建议你先试试这个方法,再去找其他解决方案。
你可以通过 binstar 来安装它:
conda install -c menpo opencv