如何在Python中使用OpenCV?

Rom*_*man 30 python opencv python-import importerror

我刚刚在Windows 7机器上安装了OpenCV.结果,我得到一个新目录:

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

在这个目录中,我有两个文件:cv.libcv.pyd.

然后我尝试使用opencvPython.我做以下事情:

import sys
sys.path.append('C:\OpenCV2.2\Python2.7\Lib\site-packages')
import cv
Run Code Online (Sandbox Code Playgroud)

因此,我收到以下错误消息:

File "<stdin>", line 1, in <module>
ImportError: DLL load failed: The specified module could not be found.
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

添加

正如在这里推荐的那样,我已将内容复制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
Run Code Online (Sandbox Code Playgroud)

我需要改变什么吗?我需要添加一些东西吗?

增加3

我认为我的问题很普遍:如何使用图书馆?可能我需要在某处找到*.ddl文件?那么我需要使用包含此文件的目录的名称作为某些环境变量的值吗?或者我可能需要使用sys.addpath?我还需要知道调用库的方式与包含库的文件的名称有什么关系.

增加4

有趣的是,当我输入时import cv,我得到:

ImportError: DLL load failed: The specified module could not be found.
Run Code Online (Sandbox Code Playgroud)

但是当我输入时,import opencv我得到:

ImportError: No module named opencv
Run Code Online (Sandbox Code Playgroud)

增加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
Run Code Online (Sandbox Code Playgroud)

增加6

我已经设法通过安装numpy解决了这个问题.花了一些时间,因为我没有意识到有不同的numpy安装程序对应不同版本的Python.一些细节可以在我对自己问题的回答中找到(见下文).

Rom*_*man 15

问题解决了.已完成以下步骤:

  1. 已安装新版本的python(版本2.7).
  2. 之后我仍然无法运行OpenCV,因为我在numpy库中遇到了一些问题.
  3. 我厌倦了安装numpy,但安装程序没有看到我的新版本的Python.
  4. 我删除了旧版本的Python以及Path系统vatriable中旧版本的链接.
  5. 之后那个numpy安装程序无法完成安装.
  6. 我意识到我需要运行另一个与Python 2.7相关联的numpy安装程序.它可以在这里找到.
  7. 一切顺利.我能够"导入cv".


Car*_* F. 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目录中.

  • 感谢您的更新,@ mcduffe.OpenCV现在也附带64位Python库.我会更新我的回复. (2认同)