如何在 Python 中使用 OpenCV?

Posted

技术标签:

【中文标题】如何在 Python 中使用 OpenCV?【英文标题】:How to use OpenCV in Python? 【发布时间】:2011-06-29 03:47:34 【问题描述】:

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

我做错了什么?

添加

按照here的推荐,我已将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安装程序。一些细节可以在我对自己问题的回答中找到(见下文)。

【问题讨论】:

你试过导出你的python库路径吗? @ardiyu07,没有。我该怎么做? 导出 PYTHON_LIBRARY_PATH=~/projects/opencv/release/lib:$PYTHON_LIBRARY_PATH 我尝试在命令行中执行它并得到:'export' is not Recognized as an internal or external command 根据您的第二个补充,OpenCV 认为您使用的是 Python 2.7,而您似乎使用的是 Python 2.6。如果您只使用 2.6 或 2.7 可能会有所帮助? 【参考方案1】:

我怀疑你遇到了同样的问题。如果您有 64 位版本的 Python,它无法加载 32 位 DLL。 OpenCV 目前只提供 32 位二进制文​​件。如果您想要 64 位 .pyd 和 .dll 文件,您必须自己编译它们。 OpenCV Wiki 上有一些instructions,但它不适合胆小的人。预计会有大量时间投入。

最简单的解决方案是:

    卸载 64 位 Python 安装 32 位发行版。

PythonXY 发行版包括 pyopencv——一组很好的 OpenCV 钩子。唯一的限制是它是 32 位的,所以不要计划用它来处理千兆像素的天文数据! ;)

如果您必须拥有 64 位版本,请按照 these instructions 获取 OpenCV 以使用 Visual Studio 2010 进行编译。关于 *** 的讨论描述了使用 VC Express 构建 64 位应用程序.

编辑: OpenCV 现在附带 64 位 Python 二进制文件。 .dll 文件需要放在路径中的某个位置(我将它们放在脚本文件夹中),而 .pyd 文件需要放在您的站点包目录中。

【讨论】:

UC Irvine 有一组“非官方”Windows 二进制文件,它们在 64 位 Python 2.7 和 OpenCV 2.4.8 下为我工作。我意识到并不是每个人都喜欢运行其他人构建的二进制文件,但是当我面临卸载 64 位 Python 或自己编译时,我决定试一试。 感谢您的更新,@mcduffe。 OpenCV 现在还附带 64 位 Python 库。我会更新我的回复。【参考方案2】:

我在将 OpenCV 与 Python 交互时遇到了麻烦,我四处寻找帮助。这对我有用。我基本上关注了这篇文章:http://opencvpython.blogspot.com/2012/05/install-opencv-in-windows-for-python.html。下载并解压 OpenCV 2.4.6 后,您基本上会得到一个名为“opencv”的文件夹,里面有一堆东西。导航到构建->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,现在它可以工作了。【参考方案3】:

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

    已安装新版本的 python(2.7 版)。 之后我仍然无法运行 OpenCV,因为我的 numpy 库出现了一些问题。 我厌倦了安装 numpy,但安装程序没有看到我的新版本 Python。 我删除了旧版本的 Python 以及 Path 系统变量中旧版本的链接。 之后 numpy 安装程序无法完成安装。 我意识到我需要运行另一个与 Python 2.7 关联的 numpy 安装程序。可以找到here。 终于一切正常。我能够“导入简历”。

【讨论】:

【参考方案4】:

也许你应该编辑你的环境变量 右键单击“我的电脑”或类似的东西,单击属性。 在属性窗口中单击“高级”选项卡。 然后,环境变量按钮。 改变路径。

【讨论】:

我想过,但我不知道应该为什么变量分配什么值。 变量:PATH,像这样添加PATH= yourvalue:OLDPATH,关于值,我认为是dll目录的路径。虽然不确定 PYTHON_LIBRARY_PATH,而不是PATHPATH 是搜索可执行文件的路径。 IE。如果要打开终端(cmd 窗口)并输入whatever,将搜索PATH 中指定的文件夹以查找名为whatever 的可执行文件。但是,这看起来更像是混合 python 版本的问题......您似乎(?)已经为 python2.6 安装了 opencv 并试图从您的 python2.7 安装中运行它,因此更改环境变量对您没有帮助.

以上是关于如何在 Python 中使用 OpenCV?的主要内容,如果未能解决你的问题,请参考以下文章

如何在python中使用opencv复制图像区域?

如何在Python中使用OpenCV的

如何在python中使用opencv模块(我正在使用pycharm)[重复]

如何在 Python 中使用 OpenCV 创建 Mat 矩阵?

如何在Python中使用OpenCV以特定顺序显示图像?

如何在 Python 中使用 OpenCV 合并 2 个灰度图像