如何在Python中使用OpenCV?

30

我刚刚在我的Windows 7机器上安装了OpenCV。因此,我得到了一个新的目录:

C:\OpenCV2.2\Python2.7\Lib\site-packages

在这个目录下,我有两个文件:cv.libcv.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

我认为我的问题是普遍的:如何使用库?可能我需要在某个地方找到一个*.ddl文件?然后我需要将包含此文件的目录名称用作某些环境变量的值?或者我需要使用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安装程序。有关详细信息,请参见我自己问题的答案(见下文)。


@ardiyu07,不行。我该怎么做? - Roman
2
export PYTHON_LIBRARY_PATH=~/projects/opencv/release/lib:$PYTHON_LIBRARY_PATH - ardiyu07
1
我尝试在命令行中执行它,但是出现了以下提示:'export' 不被识别为内部或外部命令。 - Roman
导出仅适用于posix环境,因此您无法在命令提示符中执行它,我以为您正在使用cygwin或mingw作为Python IDE。 - ardiyu07
1
根据你的第二个补充,OpenCV认为你正在使用Python 2.6,而你似乎正在使用Python 2.7。也许如果你只使用2.6或2.7会有所帮助? - Daan
显示剩余2条评论
4个回答

15
问题已解决。以下步骤已完成:
  1. 安装了新版本的Python(版本2.7)。
  2. 然后,我仍然无法运行OpenCV,因为我在numpy库中遇到了一些问题。
  3. 我试图安装numpy,但安装程序没有看到我的新版本的Python。
  4. 我删除了旧版本的Python以及路径系统变量中与旧版本有关的链接。
  5. 之后,numpy安装程序无法完成安装。
  6. 我意识到我需要运行另一个与Python 2.7相关联的numpy安装程序。它可以在这里找到 here
  7. 最终一切都正常了。我能够 "import cv"。

5
我猜测你遇到了和我一样的问题。如果你使用的是64位Python版本,它无法加载32位DLL文件。OpenCV目前只提供32位的二进制文件。如果你需要64位的.pyd和.dll文件,你必须自己编译它们。在OpenCV Wiki上有一些说明,但这并不适合新手。预计需要大量时间投入。
最简单的解决方案是:
  1. 卸载64位Python
  2. 安装32位发行版。
PythonXY发行版包含pyopencv——一个很好的OpenCV钩子集。唯一的限制是它是32位的,所以不要打算用它处理吉比像素的天文数据!;)
如果你必须使用64位版本,请按照这些说明的步骤获取OpenCV,以便在Visual Studio 2010中进行编译。有一个stackoverflow讨论描述了使用VC Express构建64位应用程序。 编辑:现在OpenCV随附64位Python二进制文件。 .dll文件需要放在您的路径中的某个位置(我将它们放在脚本文件夹中),.pyd文件放在您的site-packages目录中。

1
这里有一组“非官方”的Windows二进制文件,位于UC Irvine,在64位Python 2.7和OpenCV 2.4.8下对我有效。我知道并不是每个人都愿意运行别人构建的二进制文件,但当我面临卸载64位Python或自己编译时,我决定尝试一下这些文件。 - mcduffee
2
感谢更新,@mcduffe。OpenCV现在也附带64位Python库。我会更新我的回复。 - Carl F.

3

我在使用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 IDE,它工作正常。在Python解释器中,输入“import cv”对我有效。


这对我也起作用了。谢谢!除了我使用的是64位Windows,所以我安装了64位Anaconda Spyder发行版。因此,当我粘贴cv2.pyd并导入它时,它会给出一些无效的32位DLL文件错误。所以我安装了32位Anaconda Spyder,现在它可以工作了。 - user961627

0

也许你应该编辑你的环境变量
右键点击“我的电脑”或类似的选项,然后点击属性。

在属性窗口中点击高级选项卡。
然后点击环境变量按钮。
更改路径。


我考虑过这个问题,但我不知道应该给哪个变量赋什么值。 - Roman
变量:PATH,添加方式为 PATH=yourvalue:OLDPATH,关于该值,我认为它是指向 DLL 目录的路径。不过我不确定。 - Pierre Guilbert
1
PYTHON_LIBRARY_PATH,不是 PATHPATH 是用于搜索可执行文件的路径。例如,如果您想打开终端(cmd 窗口)并键入 whatever,则会搜索在 PATH 中指定的文件夹以查找名为 whatever 的可执行文件。但是,这更像是混合使用 Python 版本的问题... 您似乎已经为 Python2.6 安装了 opencv,并尝试从 Python2.7 安装中运行它,因此更改环境变量不太可能帮助您。 - Joe Kington

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接