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加载失败”的主要内容,如果未能解决你的问题,请参考以下文章
python 3.6 on win 10 editdistance模块无法导入(DLL加载失败问题)
ImportError:导入 _rolling_ball_cy 时 DLL 加载失败:
TensorFlow ImportError:导入_pywrap_tensorflow_internal时DLL加载失败:找不到指定的模块