如何在Python中使用OpenCV?

30 投票
4 回答
78068 浏览
提问于 2025-04-16 12:00

我刚在我的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

我觉得我的问题比较普遍:如何使用一个库?我是不是需要在某个地方找到一个*.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 个回答

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这个开发环境,运行得很顺利。在Python解释器里输入“import cv”也能正常工作。

5

我觉得你可能遇到了我之前碰到过的问题。如果你使用的是64位的Python,它是无法加载32位的DLL文件的。而目前OpenCV只提供32位的版本。如果你想要64位的.pyd和.dll文件,就得自己编译。OpenCV的维基上有一些说明,不过这对初学者来说可能有点难。你需要花费不少时间。

最简单的解决办法是:

  1. 卸载64位的Python
  2. 安装32位的版本。

PythonXY这个版本里包含了pyopencv,这是一个很不错的OpenCV接口。不过它的限制是只能用32位,所以不要指望用它来处理巨大的天文数据哦!;)

如果你一定要用64位版本,可以按照这些说明来用Visual Studio 2010编译OpenCV。StackOverflow上也有讨论关于如何用VC Express构建64位应用程序。

编辑:现在OpenCV已经提供64位的Python版本了。你需要把.dll文件放在你的路径中的某个地方(我把它放在脚本文件夹里),而.pyd文件则放在你的site-packages目录下。

15

问题已经解决。以下是我所做的步骤:

  1. 我安装了一个新的Python版本(2.7版)。
  2. 但之后我还是无法运行OpenCV,因为我在使用numpy库时遇到了一些问题。
  3. 我尝试安装numpy,但安装程序没有找到我新安装的Python版本。
  4. 于是我删除了旧版本的Python,以及系统路径中指向旧版本的链接。
  5. 之后,numpy的安装程序还是无法完成安装。
  6. 我意识到我需要运行一个与Python 2.7相关的numpy安装程序。可以在这里找到。
  7. 最后一切都正常了。我成功地使用了“import cv”。

撰写回答