如何在Python中使用OpenCV?
我刚在我的Windows 7电脑上安装了OpenCV,结果新建了一个文件夹:
C:\OpenCV2.2\Python2.7\Lib\site-packages
在这个文件夹里,我找到了两个文件:cv.lib
和cv.pyd
。
然后我想在Python中使用opencv
,我做了以下操作:
import sys
sys.path.append('C:\OpenCV2.2\Python2.7\Lib\site-packages')
import cv
结果我收到了一个错误信息:
File "<stdin>", line 1, in <module>
ImportError: DLL load failed: The specified module could not be found.
我哪里做错了呢?
补充说明
根据推荐的建议,我把C:\OpenCV2.0\Python2.6\Lib\site-packages
里的内容复制到了C:\Python26\Lib\site-packages
。但这并没有帮助。
补充说明 2
我的环境变量设置如下:
Path=C:\Program Files\MiKTex\miktex\bin;C:\OpenCV2.2\bin;C:\Python26;
PYTHONPATH=C:\OpenCV2.2\Python2.7\Lib\site-packages
我需要改变什么吗?或者需要添加什么吗?
补充说明 3
我觉得我的问题比较普遍:如何使用一个库?我是不是需要在某个地方找到一个*.dll文件?然后把这个文件所在的文件夹名作为环境变量的值?或者我需要用sys.addpath
?我还想知道调用这个库的方式和包含这个库的文件名有什么关系。
补充说明 4
有趣的是,当我输入import cv
时,我得到了:
ImportError: DLL load failed: The specified module could not be found.
但是当我输入import opencv
时,我得到了:
ImportError: No module named opencv
补充说明 5
有人建议我使用不一致的Python版本。具体来说,OpenCV试图使用Python2.7,而我之前用的是Python2.6。所以,我安装了Python 2.7。这确实有区别。现在我没有了之前的错误信息,但出现了新的错误:
ImportError: numpy.core.multiarray failed to import
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: numpy.core.multiarray failed to import
补充说明 6
我通过安装numpy解决了这个问题。这花了一些时间,因为我没有意识到不同版本的Python对应不同的numpy安装程序。更多细节可以在我对自己问题的回答中找到(见下文)。
4 个回答
我在用Python和OpenCV对接的时候遇到了麻烦,四处寻找帮助。最后我找到了一些有效的方法。基本上,我是按照这个帖子的方法操作的:http://opencvpython.blogspot.com/2012/05/install-opencv-in-windows-for-python.html。下载并解压OpenCV 2.4.6后,你会得到一个叫“opencv”的文件夹,里面有很多东西。接着,进入build->python->2.7文件夹。在这里,你会看到一个叫“cv2.pyd”的文件。我把这个文件复制到“python-2.7.5\Lib\site-packages”文件夹里。我实际上是在用Spyder这个开发环境,运行得很顺利。在Python解释器里输入“import cv”也能正常工作。
我觉得你可能遇到了我之前碰到过的问题。如果你使用的是64位的Python,它是无法加载32位的DLL文件的。而目前OpenCV只提供32位的版本。如果你想要64位的.pyd和.dll文件,就得自己编译。OpenCV的维基上有一些说明,不过这对初学者来说可能有点难。你需要花费不少时间。
最简单的解决办法是:
- 卸载64位的Python
- 安装32位的版本。
PythonXY这个版本里包含了pyopencv,这是一个很不错的OpenCV接口。不过它的限制是只能用32位,所以不要指望用它来处理巨大的天文数据哦!;)
如果你一定要用64位版本,可以按照这些说明来用Visual Studio 2010编译OpenCV。StackOverflow上也有讨论关于如何用VC Express构建64位应用程序。
编辑:现在OpenCV已经提供64位的Python版本了。你需要把.dll文件放在你的路径中的某个地方(我把它放在脚本文件夹里),而.pyd文件则放在你的site-packages目录下。
问题已经解决。以下是我所做的步骤:
- 我安装了一个新的Python版本(2.7版)。
- 但之后我还是无法运行OpenCV,因为我在使用numpy库时遇到了一些问题。
- 我尝试安装numpy,但安装程序没有找到我新安装的Python版本。
- 于是我删除了旧版本的Python,以及系统路径中指向旧版本的链接。
- 之后,numpy的安装程序还是无法完成安装。
- 我意识到我需要运行一个与Python 2.7相关的numpy安装程序。可以在这里找到。
- 最后一切都正常了。我成功地使用了“import cv”。