0

我正在尝试在我的机器上安装 opencv,如书中所述:“Packtpub OpenCV Computer Vision with Python Apr 2013”

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

使用 CMaker,使用编译器 MinGW,以及书中所说的一切

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

python绘图.py


OpenCV Python版绘图

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

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

import cv2.cv as cv

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


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

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

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

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

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

4

3 回答 3

0

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

这样做会为输出控制台增加一点,它会导致 python VM 在它尝试寻找东西时输出它正在寻找的东西,尤其是在发生故障时。我发现这在尝试解决路径问题等问题时很有帮助。

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

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

我首先从 python -v 方法开始。

于 2013-11-29T06:31:44.290 回答
0

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

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

于 2014-04-20T08:02:20.010 回答
0

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

如果你安装了简单的 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

希望能帮助到你。

于 2017-06-14T15:59:28.413 回答