python + opencv“dll加载失败”

时间:2013-10-07 23:59:02

标签: c++ python opencv dll mingw

我试图在我的机器上安装opencv,如书中所述: " Packtpub OpenCV计算机视觉与Python 2013年4月"

它说为了运行kinect你需要编译openCV中的一些内容,所以我下载了openCV .exe,它提取到一个3.2gb文件夹并继续执行所有步骤......

使用CMaker,使用编译器MinGW,以及书中所说的所有内容

它告诉我尝试运行一些示例......但是当我尝试按照本书的推荐运行drawing.py时,以及其他所有示例:

python drawing.py


OpenCV Python版绘图

回溯<最近的通话最后一次>:

文件" drawing.py",第7行,

import cv2.cv as cv

ImportError:DLL加载失败:对内存位置的访问无效。


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

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

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

我试图在"路径"中添加大量文件夹。变量,它没有工作

请告诉我如何找出哪些dll丢失,以便我可以在计算机上搜索它们或以其他方式解决这个问题,因为我只是出于想法

3 个答案:

答案 0 :(得分:0)

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

这样做会给输出控制台增加一点点,它会导致python VM在尝试寻找东西时输出它所寻找的东西,特别是在发生故障时。我发现在尝试寻找诸如路径问题等问题时会有所帮助。

听起来您还没有正确设置路径。你看过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方法开始。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

如果您安装了简单的numpy,请不要担心,请在下载新软件包的目录中打开cmd。用这个:

<div id="box"></div>

pip install name_of_the_whl_file 

它会自动卸载旧pip3 install name_of_the_whl_file 并安装numpy + numpy。 另外,在导入cv2语句之前,请始终在代码中重新添加import numpy语句。

mkll

希望它有所帮助。