导入 cv2时 DLL 加载失败错误

我使用 python 3.6在 windows 机器上安装了 opencv,没有任何问题,使用:

pip install opencv-python

但是当我尝试导入 cv2时,会得到以下错误

ImportError: DLL load failed: The specified module could not be found.

我看过 这篇文章

它说 cv2不能与 python3一起工作,我想知道这个问题是否已经得到解决,或者是否有办法绕过它

177431 次浏览

您可以在 Windows 32位或64位机器上下载最新的 OpenCV 3.2.0 for Python 3.6,查找从 非官方网站开始的 opencv_python‑3.2.0‑cp36‑cp36m文件。然后输入下面的命令来安装它:

  • pip install opencv_python‑3.2.0‑cp36‑cp36m‑win32.whl(32位版本)
  • pip install opencv_python‑3.2.0‑cp36‑cp36m‑win_amd64.whl(64位版本)

我觉得这样更容易。

2017-09-15年度最新消息:

OpenCV 3.3.0车轮文件现在可在 非官方网站和取代 OpenCV 3.2.0

2018年2月15日最新消息:

OpenCV 3.4.0车轮文件现在可在 非官方网站和取代 OpenCV 3.3.0

2018年6月19日最新消息:

OpenCV 3.4.1车轮文件现在可在 非官方网站CPython 3.5/3.6/3.7的支持,并取代了 OpenCV 3.4.0

2018年10月3日最新消息:

OpenCV 3.4.3车轮文件现在可在 非官方网站CPython 3.5/3.6/3.7的支持,并取代了 OpenCV 3.4.1

2019年1月30日最新消息:

OpenCV 4.0.1车轮文件现在可在 非官方网站CPython 3.5/3.6/3.7的支持。

2019年6月10日最新消息:

OpenCV 3.4.6OpenCV 4.1.0车轮文件现在可在 非官方网站CPython 3.5/3.6/3.7的支持。

如果您在 python 3.5中使用 Anaconda,那么这是 Anaconda 版本中的一个问题

您可以通过将 python3.dll文件复制到 Anaconda3文件夹(python.exe所在的位置)来解决这个问题

如何获取“ python3.dll”

  • cmd中,键入 python --version查找您的安装是64位还是32位
  • 给你下载 python 3.x 可嵌入的 zip 文件
  • 解压缩压缩文件并将 python3.dll文件复制到 Anaconda3文件夹

但是,如果你可以移动到 Anacondapython 3.6你将不会面临这个问题。如果这对你来说是可能的,那么这就是推荐的方法。.

我在 Anaconda3(Python 3.6)上安装 opencv 2.4.13时也遇到了同样的问题... ... 我通过恢复到 Anaconda2(Python 2.7)设法解决了这个问题

在这个问题上花费了太多时间并尝试了所有不同的答案之后,以下是我们的发现:

  • @ thewaywe 接受的答案不再适用。我认为这适用于 opencv-python 模块仍然不可用的情况。

  • 这确实是 Anaconda 4.2中的一个 bug,因为他们忘记发布 python3.dll。他们在下一个版本中修复了这个问题,但不幸的是,4.2是最后一个默认使用 Python 3.5的版本。如果你被 Python 3.5困住了(例如 VS2015只知道3.5的版本) ,那么你必须手动下载 python3.dll,如@Ramesh-X 所描述的。

  • 如果你可以继续使用 Python 3.6(目前使用 OpenCV 和 VS2015有点困难) ,那么只要安装最新的 Anaconda 版本,你就不需要处理这些问题了。

我也有同样的问题。当我安装 WinPython 编程,并在从我的 opencv 目录复制 cv2.pyd 文件后运行 opencv 时,它将是这样的: C: 用户... ... 下载 opencv build python 2.7 x64,x64或 x86取决于您的32或64位设备。并粘贴到 C: Users... ... 下载 WinPython-64bit-3.5.4.1 Qt5 python-3.5.4。Amd64 Lib 站点-软件包,我更喜欢之前的 python 3.5而不是3.6。因为当我安装“ import cv2”(python 3.6)时,它会直接显示: “ Import Error: DLL 加载失败: 找不到指定的模块” 然后我安装 python 3.5,打开 WinPyhton Command 提示符,输入“ pip install opencv-python”。

命令提示符会自动下载 opencv,它显示如下过程: “成功安装 opencv-python-3.3.0.10”

最后,我尝试通过输入“ import cv2”来运行 open cv,它运行正常 我尝试输入“ cv2.版本”,结果显示: “3.3.0”

安装 python 使用:

  • Pip install opencv-python (它将采用最新版本)

确保 opencv-Python 安装在 path (Python Python36 Lib site-package)中, 你会在那里找到 cv2文件夹。

要检查 cv2的版本: 导入 cv2 Print (cv2._ _ version _ _)

我花了很多时间来解决这个错误! 运行命令

pip install opencv-contrib-python

在 Winpython: Winpython-64bit-.../python_.../DLLs目录下,文件 cv2.pyd应该重命名为 _cv2.pyd

发生这种情况是因为编译器或解释器正在查找文件的多个包,删除所有相同包的数量,然后只保留一个包,然后尝试安装。这就够了

(base) C: WINDOWS system32 > conda install C: Users Todd Downloads opencv3-3.1.0-py35 _ 0.tar. bz2

下载了这个版本之后,我在水蟒终端上运行了这个命令 Https://anaconda.org/menpo/opencv3/files

这是唯一的方法,我可以得到 cv2的工作,我尝试了两天的一切。

这个问题是由于 Anaconda3中缺少 python3.dll文件造成的。

要解决这个问题,只需将 python3.dll复制到 C:\Program Files\Anaconda3(或者安装 水蟒3的任何地方)。

您可以通过下载 Python 的发布页面底部提供的二进制文件并从 ZIP 文件中提取 python3.dll来获得 python3.dll

关于这个问题有很多问题,也有很多建议。没有一个对我最近的 Openv3.4.16和 Python 3.6/3.7有帮助。 最后,我切换到 Pyhon2.7.15并安装了 opencv3.1.0。

当我使用依赖性 Walker 查看 cv2.pyd 时,3.1对缺少的一个 dll 没有依赖性。Opencv 3.4 已经这个缺失的 dll 依赖项:

API-MS-WIN-DOWNLEVEL-SHLWAPI-L1-1-0.DLL

也许这就是问题所在。

附注: 我有 Win7专业版64位,32位 Python 2.7.15

我在使用 python 3.6(Anaconda3)和 OpenCV 3.4.1以便 spyder 工作时遇到了同样的问题。即使在将 cv2.pyd 复制到 Anaconda3 Users/home/Anaconda3/Lib/site-package 之后,它仍然无法工作。

但找到了解决办法

后来,我在 Anaconda 上安装了 OpenCV 和 Dlib,并复制了生成的 cv2.cp36-win _ amd64。Pyd 和 dlib.cp36-win _ amd64。Pyd 到 Anaconda3用户/主页/Anaconda3/Lib/网站-软件包。这些可以从环境文件夹 C: 用户家庭 Anaconda3 envs opencvLib 站点包复制。

Spyder 终于开始工作了

最近我在 Azure WindowsServer2012r2中遇到了类似的问题。有没有水蟒都试过了,但没有一个有用。经过大量的发现,我发现 Mfplat.dll丢失,这是与视窗媒体服务有关。

因此,您必须手动安装这些特性,以便获得与窗口媒体服务相关的 dll。

1. 打开或关闭窗口功能

2. 跳过角色屏幕,直接进入特写屏幕

3. 在“用户界面和基础设施”中选择“桌面体验”

在此之后,opencv 所需的所有媒体服务都将可用。

因此,如果你计划在云中运行你的代码(窗口服务器) ,那么请不要忘记选择桌面体验功能。

如果这对某人有帮助的话,在官方的 python 3.6 windows docker 图片上,我必须从我的桌面上复制下面的库:

C: windows system 32

aepic.dll
avicap32.dll
avifil32.dll
avrt.dll
Chakra.dll
CompPkgSup.dll
CoreUIComponents.dll
cryptngc.dll
dcomp.dll
devmgr.dll
dmenterprisediagnostics.dll
dsreg.dll
edgeIso.dll
edpauditapi.dll
edputil.dll
efsadu.dll
efswrt.dll
ELSCore.dll
evr.dll
ieframe.dll
ksuser.dll
mf.dll
mfasfsrcsnk.dll
mfcore.dll
mfnetcore.dll
mfnetsrc.dll
mfplat.dll
mfreadwrite.dll
mftranscode.dll
msacm32.dll
msacm32.drv
msvfw32.dll
ngcrecovery.dll
oledlg.dll
policymanager.dll
RTWorkQ.dll
shdocvw.dll
webauthn.dll
WpAXHolder.dll
wuceffects.dll

C: windows SysWOW64

aepic.dll
avicap32.dll
avifil32.dll
avrt.dll
Chakra.dll
CompPkgSup.dll
CoreUIComponents.dll
cryptngc.dll
dcomp.dll
devmgr.dll
dsreg.dll
edgeIso.dll
edpauditapi.dll
edputil.dll
efsadu.dll
efswrt.dll
ELSCore.dll
evr.dll
ieframe.dll
ksuser.dll
mfasfsrcsnk.dll
mfcore.dll
mfnetcore.dll
mfnetsrc.dll
mfplat.dll
mfreadwrite.dll
mftranscode.dll
msacm32.dll
msvfw32.dll
oledlg.dll
policymanager.dll
RTWorkQ.dll
shdocvw.dll
webauthn.dll
wuceffects.dll`

请记住,如果您想为 Windows 安装 python 包/库,

你应该一直考虑 Python 非官方二进制文件

第一步:

搜索你的软件包,下载依赖版本2.7或3.6,你可以在下载/your _ package _ version. whl 下找到它,它的名字叫做 python wheel

第二步:

现在使用 pip 进行安装,

pip install ~/Downloads/your_packae_ver.whl

这将安装没有任何错误。

我在 视窗10(N)上使用基于 Python 3.7(OpenCV 版本4.0)的新 Anaconda 安装时遇到了这个问题。以上的建议都没有帮助(比如从非官方站点安装 OpenCV 或者安装 VC 可再发行版)。

我根据 这个 Github 问题使用 dumpbin.exe检查了 ...\AppData\Local\conda\conda\envs\foo\Lib\site-packages\cv2\cv2.cp37-win_amd64.pyd的 DLL 依赖关系。我注意到一个库 MF.dll,我发现它属于 WindowsMediaFoundation。

所以我 安装 对于 Windows 10的 N 个版本,< strong > Media Feature Pack 和瞧,问题解决了!

我也有同样的问题,我花了整整三天的时间来解决它。我尝试了所有建议: 升级 pip,升级 Visual C + + ,升级 Anaconda,手动下载文件和基本上所有我能在网上找到的解决方案。以下是最终成功的方法,也许能帮到其他人:

1- 我放弃了 Python 3和基于 Anaconda 的下载,因为我注意到它们存在一些问题,所以改为下载 Python 2.7.1664位。

2- 导航到 Pip 在我的驱动器上的位置(对我来说路径是 C: Python 27 Scripts) ,通过选择它来突出显示路径,然后输入“ cmd”,这样命令提示符就会在该路径上打开(我注意到跳过这一步通常会带来一些错误)

3- 在 CMD 上使用 python -m pip install --upgrade pip更新 Pip (同样,跳过这一步而不更新它不会让这个过程通过)

4-https://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv下载适当的 Wheel文件(在尝试了几次之后,我用的是 opencv _ python-2.4.13.7-cp27-cp27m-win _ amd64.whl) ,我将它复制粘贴到 Pip 所在的文件夹中(C: Python 27 Scripts for me) ,然后通过 CMD 使用: pip install opencv_python-2.4.13.7-cp27-cp27m-win_amd64.whl安装它。总是通过 CMD 在那条路径上打开,如步骤2所示

5- 在第4步之后,当我使用 import cv2导入 OpenCV 时,我不再有 DLL 错误,而是一个与 Numpy 相关的错误(因为我刚刚安装了那个版本的 Python,所以 Numpy 还没有安装)。我通过键入 pip install numpy安装了 numpy,瞧!问题得到解决,OpenCV 正确导入。

希望这对谁有帮助。

坦率地说,这里有很多非常聪明和复杂的答案。我的就是又蠢又简单。我删除了我的康达环境,重新安装从头开始,煞费苦心地 先安装 opencv。这解决了我的问题。环境应该是暂时的、透明的——不要太依赖它。

因此,如果我的环境被称为 fubar,首先要确保每个实例都被禁用(包括正在使用它的任何 IDE)。然后删除它:

conda remove --name fubar --all

现在我只需要重新创建我的环境并首先添加 opencv:

conda create --name fubar
conda activate fubar
conda install opencv

然后从那里开始。首先打开 python,确保 import cv2正常工作。那你该走了。注意,我总是(一直都是)最后安装 Spyder,因为当我不安装时,它往往会把事情搞砸。

请注意,如果这不起作用,我们有一些情况下,人们不得不卸载和重新安装 Anaconda,然后工作。显然这是最后的手段。

在我的例子中,我不得不安装一个旧版本的 openCV (windows 10,Python 3.6.8)

pip install opencv-python==3.3.0.9

在我的案例中,Windows10的一次重大更新删除了一些 Windows 软件包,所以其他方法(重新安装 opencv 等)没有帮助。要修复它,请安装:

A) MicrosoftVisualC + + 可在 VisualStudio2015、2017和2019年重新发布

B) N 个版本的媒体特性包-只有在你有视窗10N 时才需要

两者都需要重新启动电脑。

缺少以下 dll 可能导致此错误 enter image description here

要安装这个 dll: Https://www.microsoft.com/en-us/software-download/mediafeaturepack 如上所述

从安装了 opencv 的 anaconda 4.10.1环境中的 windows 10 powershell 运行 python 3.8.8

Conda 安装 opencv

当我从命令行启动 python 时,导入 opencv 没有问题。

然而,当我试图使用 python 解释器为我激活的特定蟒蛇环境从 pydev 内部运行代码时,pydev 在导入 opencv 时找不到它正在查找的 dll。

以下环境变量解决了这个问题:

CONDA _ DLL _ SEARCH _ MODIFATION _ ENABLE = 1

资料来源: 当从 Conda 环境运行时,PyDev/Eclipse 没有装载 _ mklinit

这指向了另一个库加载问题的故障解决说明: https://docs.conda.io/projects/conda/en/latest/user-guide/troubleshooting.html#numpy-mkl-library-load-failed

如果您正在使用一个没有 GUI 的服务器或 docker 环境(例如 Windows Core Server) ,请确保您使用的是 cv2的 headless 版本:

pip install opencv-contrib-python-headless

我也有同样的问题,看起来 openCV 需要 Windows Media Feature Pack,这个包默认没有安装在 Windows 10N 上,请使用以下链接安装它:

Https://www.microsoft.com/en-us/software-download/mediafeaturepack

通过在 新的环境中安装 python 3.9.12(使用 conda) ,然后在该环境中安装 opencv,我设法使它工作。因为我的 python 版本,所以安装了 opencv 版本4.5.5,而不是4.60。

(我已经更新了 VC2015-2022,并将 python3.dll 添加到 PATH; 这两者都不起作用。)

视窗11N

这是对那些不使用水蟒的人的最终修复。

只是有丢失的 DLL 文件,就是这样

下载最新版本的

Https://sourceforge.net/projects/opencvlibrary/

然后在你提取出来之后。Dll 文件,并将其全部复制并粘贴到 C: WindowsSystem32中,然后批准替换。

就是这样!