python + opencv“dll加载失败”

Posted

技术标签:

【中文标题】python + opencv“dll加载失败”【英文标题】:python + opencv "dll load failed" 【发布时间】:2013-10-07 23:59:02 【问题描述】:

我正在尝试按照书中的说明在我的机器上安装 opencv: “Packtpub OpenCV 计算机视觉与 Python 2013 年 4 月”

它说要运行 kinect,你需要编译 openCV 并在其中包含一些东西,所以我下载了 openCV .exe,它解压到 3.2gb 文件夹并继续执行所有步骤...

用过CMaker,用过编译器MinGW,书上说的一切

它告诉我尝试运行一些示例......但是当我尝试按照本书和所有其他人的建议运行drawing.py时,它会说:

python绘图.py


OpenCV Python版绘图

traceback:

文件“drawing.py”,第 7 行,在

import cv2.cv as cv

ImportError: DLL load failed: 对内存位置的访问无效。


我看到很多人说这个问题是通过将openCV dll的bin的路径添加到路径来解决的......

如何找出缺少的 dll 名称,以便找到它的名称并找到它所在的文件夹?

我有一台 x64 计算机,但书上告诉我要安装所有 x86,因为它更难出现一些小错误,可能是 openCV、编译器、cmaker 和 python 之间的版本不兼容?

我尝试将很多文件夹添加到“路径”变量中,但没有成功

请告诉我如何找出缺少哪些 dll,以便我可以在计算机上搜索它们或通过其他方式解决此问题,因为我只是没有想法

【问题讨论】:

【参考方案1】:

我没有足够高的代表来添加评论,否则我会,但你可以做的是使用 -v 选项启动 python。

这样做会给输出控制台添加更多内容,并且会导致 python 虚拟机在尝试查找内容时输出它正在查找的内容,尤其是在发生故障时。我发现这在尝试解决路径问题等问题时很有帮助。

听起来您的路径设置不正确。你看过ImportError: DLL load failed: %1 is not a valid Win32 application 吗?如果 DLL 应该在某个位置,但没有加载或存在,但随后通过 LoadLibrary(不检查它是否实际加载)“调用”,则可能导致此类错误。可能是原始 DLL 的错误,未能验证后续 DLL 是否已加载,而不是仅仅假设 LoadLibrary 调用成功。

除了python -v yourmodule.py 选项你也可以尝试运行一个 strace (如果你在 unix 上——但听起来不像你)。我曾经在 Windows 上使用 SoftICE 进行深入挖掘。如果您知道问题根源所在的包或 DLL,并且可以访问 dll 导出工具,那么您应该能够获得 dll 所需的依赖项列表(它依赖的外部函数)。然后你只需要知道或从其他 DLL 中找到它依赖的那些函数。自从我过去一直在做这种事情来定位其他 DLL 中的函数以来已经有一段时间了,但从探险者的角度来看,这是完全可行的。但可能有更简单的方法。

我先从 python -v 方法开始。

【讨论】:

Windows 中的 Python 只是一种痛苦。我的建议是使用 linux。【参考方案2】:

您需要的 DLL 几乎可以肯定是保存在 opencv/build/x64/vc11/bin 中的那些(根据您使用的任何编译器,此路径会有所不同,但等效)。这是唯一需要添加到系统路径的文件夹。

确保如果您有 32 位版本的 Python,则使用 32 位编译器编译 OpenCV。打开 Python,它会告诉你它的架构。

【讨论】:

【参考方案3】:

另外,尝试从二进制包的链接binary package for numpy+mkll 安装 numpy+mkll 而不是 numpy。我有同样的错误,这个解决方案为我解决了这个问题。

如果你安装了simple numpy,不用担心,在你下载新包的目录中打开cmd。使用这个:

pip install name_of_the_whl_file 

pip3 install name_of_the_whl_file

它将自动卸载旧的numpy 并安装numpy+mkll。 另外,请务必在 import cv2 语句之前在代码中添加 import numpy 语句。

import numpy import cv2

希望对你有帮助。

【讨论】:

以上是关于python + opencv“dll加载失败”的主要内容,如果未能解决你的问题,请参考以下文章

导入 cv2 (opencv) 时出现“DLL 加载失败”

DLL加载失败:找不到指定的模块

Python 中的 C++ 扩展“DLL 加载失败”

python 3.6 on win 10 editdistance模块无法导入(DLL加载失败问题)

ImportError:导入 _rolling_ball_cy 时 DLL 加载失败:

TensorFlow ImportError:导入_pywrap_tensorflow_internal时DLL加载失败:找不到指定的模块