我已经总结了我现在可以完全正常使用的解决方案OpenCV-Python-如何将OpenCV-Python软件包安装到Anaconda(Windows)。不过,我已经将重要内容复制并粘贴到了这篇文章中。
在撰写本文时,我正在使用Windows 8.1、64位计算机,Anaconda / Python2.x。(请参阅下面的注释-这也适用于Windows 10,也可能适用于Python 3.x)。
注意1:正如@great_raisin(谢谢)在评论部分中提到的那样,该解决方案似乎也适用于Windows 10。
注意2:这也可能适用于Anaconda / Python3.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"
。
TL; DR
要在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
文件复制并粘贴到此目录(以便我们可以import cv2
在Python代码中使用)。
为此,请复制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
执行完此步骤后,我们现在将可以import cv2
在Python代码中使用。但是,我们仍然需要做更多的工作才能使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%\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现在可以工作了。
祝好运!