我已经总结了完全可用的解决方案,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)配合使用,我们需要执行以下步骤:
- 从官方 OpenCV 网站下载 OpenCV 包
- 将
cv2.pyd
复制并粘贴到 Anaconda 的 site-packages 目录中。
- 设置用户环境变量,以便 Anaconda 知道在哪里找到 FFMPEG 工具。
- 进行一些测试,以确认 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](https://istack.dev59.com/eHfgo.webp)
(来源: 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()
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter("output_video.avi", fourcc, 20.0, (640, 360))
print out.isOpened()
cap.release()
out.release()
(或者旧版本...)
import cv2
cv2.VideoCapture("input_video.mp4")
print cv2.isOpened()
fourcc = cv2.cv.CV_FOURCC(*'XVID')
out = cv2.VideoWriter("output_video.avi",fourcc, 20.0, (640,360))
print out.isOpened()
cap.release()
out.release()
这个测试非常重要。如果你想处理视频文件,你需要确保Anaconda / Spyder IDE可以使用FFMPEG(视频编解码器)。我花了几天时间才让它工作起来。但我希望你能用更少的时间做到! :)
注意:当使用Anaconda Spyder IDE时还有一个非常重要的提示。确保检查当前的工作目录(CWD)!!!
结论
要在Anaconda(和Spyder IDE)中充分使用OpenCV,我们需要:
- 从官方OpenCV网站下载OpenCV包
- 将
cv2.pyd
复制粘贴到Anaconda网站包目录中。
- 设置用户环境变量,以便Anaconda知道如何找到FFMPEG实用程序。
- 进行一些测试,确认OpenCV和FFMPEG现在正在工作。
祝你好运!
conda install opencv
。 - fviktor