ImportError: DLL加载失败:找不到指定的过程。Python

10 投票
5 回答
46984 浏览
提问于 2025-04-17 21:05

最近,我安装了一个最新版本的Python(x,y)软件包(2.7.6.0),现在当我运行我的Python代码时,出现了一个错误:

Traceback (most recent call last):
File "D:\Projects\comparison\Lagebestimmung\main.py", line 11,   in <module>
import cv2
ImportError: DLL load failed: The specified procedure could not be found.

在安装时,我确实正确选择了opencv模块。

另外,我之前在电脑上有一个旧版本的Python(x,y),在安装新版本之前我把它卸载了。在那个旧版本中,没有出现这样的错误。

5 个回答

0

以下步骤对我有效。假设你已经安装了Python(X,Y),并且在安装时选择了OpenCV这个选项,我按照以下步骤操作:

  1. 下载opencv-2.4.13,并把文件解压到一个文件夹里。
  2. 复制文件“cv2.pyd”(这个文件大约10MB)。
  3. 把“cv2.pyd”文件替换到“...\Lib\site-packages”文件夹里。你会发现原来的“cv2.pyc”文件大小不到2MB。
  4. 启动Python(x,y)和Spyder。在Python控制台输入“cv2.version”。你应该会看到 >>> cv2.version -> '2.4.13'
  5. 现在OpenCV就可以正常工作了!
0

我也遇到过同样的问题,当我使用ipython时(如果你安装了ipython,只需在命令行输入ipython),它就能正常工作了。

1

试试这个:

在Windows上安装opencv。你可以在这里下载:

http://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.4.1/OpenCV-2.4.1.exe/download

然后

 Copy cv2.pyd from C:\opencv\build\python\x86\2.7\ and paste it in the folder python site-packages folder . restart your IDE. 

确保已经安装了numpy。如果没有,可以在这里获取:

http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy
2

对于使用 Python 3 的程序员来说,首先需要下载一个轮子包(wheel package)来安装 OpenCV。

你需要确保已经安装了 NumPy。Anaconda 是一个很好的工具,可以帮助你管理这些依赖关系,使用它的话,NumPy 会自动安装好。

接下来,从这个网址下载与你的 Python 版本相对应的 OpenCV 版本:http://www.lfd.uci.edu/~gohlke/pythonlibs/

你可以通过运行以下命令来查看你的 Python 解释器的版本:

python --version

比如我使用的是 C-Python 3.5,所以我选择了:

opencv_python‑3.2.0‑cp35‑cp35m‑win_amd64.whl

最后,在你下载了轮子包的目录下,运行:

pip install opencv_python-3.X.X-cpXX-cpXXm-xxxx.whl
11
  1. 使用依赖项查看器(Dependency Walker),可以在这个网站找到:http://www.dependencywalker.com/,去查看你从'site-packages'文件夹里找到的cv2.pyd文件。
  2. 在左上角的位置,你会看到一个库的树状图。
  3. 正常的库图标是蓝色或灰色的,找找左边那些红色图标的库,像这样:https://i.stack.imgur.com/YiEuD.png
  4. 找到那些有红色标记的API,并记住那些红色图标库的父库名称。红色标记意味着父库需要某些API,但在底层库中找不到。在我的例子里,红色图标的库是'kernel32.dll',它的父库是msvcr90.dll、tbb.dll,还有一个名字模糊的来自'winsxs'的库。
  5. 通常,问题可以通过获取正确版本的父库来解决。比如,你试图在Windows XP上使用一个为Windows Vista编译的DLL,这个DLL需要一个在Windows XP的'kernel32.dll'中不存在的'InitializeCriticalSectionEx' API。获取XP版本的DLL或者用'InitializeCriticalSection'替代'Ex'重新编译就能解决问题。再比如,你在使用为Qt 4.8.4和PyQt4编译的OpenCV,而这个版本的Qt是4.7。cv2.pyd(顺便说一下,这也是一个DLL)会拒绝导入,因为在4.7的DLL中缺少OpenCV所需的某些Qt API。解决办法是把Qt 4.8.4的库放到你的'%PYTHONHOME%\Lib\site-packages\PyQt4'文件夹或者PATH里。我自己在从git仓库构建OpenCV的过程中也遇到过这个问题。

撰写回答