导入cv2时DLL加载失败错误

时间:2017-04-03 12:37:41

标签: python opencv cv2

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

pip install opencv-python

但是当我尝试导入cv2时出现以下错误

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

我见过this post

它说cv2不适用于python 3我想知道这是否已修复或是否有解决方法

23 个答案:

答案 0 :(得分:36)

您可以在Windows 32位或64位计算机上下载最新的OpenCV 3.2.0 for Python 3.6,从unofficial site查找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轮文件现已在unofficial site中提供,并替换为OpenCV 3.2.0

2018-02-15更新:

OpenCV 3.4.0轮文件现已在unofficial site中提供,并替换为OpenCV 3.3.0

2018-06-19更新:

OpenCV 3.4.1轮文件现已在unofficial site支持CPython 3.5/3.6/3.7的情况下提供,并替换为OpenCV 3.4.0

2018-10-03更新:

OpenCV 3.4.3轮文件现已在unofficial site支持CPython 3.5/3.6/3.7的情况下提供,并替换为OpenCV 3.4.1

2019-01-30更新:

OpenCV 4.0.1轮文件现已在unofficial site中提供CPython 3.5/3.6/3.7支持。

答案 1 :(得分:33)

如果您使用带有python 3.5的Anaconda,这是Anaconda版本中的问题。 (请参阅此issue

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

如何获取" python3.dll"

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

但是,如果您可以Anaconda移至python 3.6,则不会遇到此问题。如果你有可能,那么这是推荐的方式..

答案 2 :(得分:23)

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

pip install opencv-contrib-python

答案 3 :(得分:7)

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

  • @thewaywewere接受的答案已不再适用。我认为这在opencv-python模块仍然不可用时适用。

  • 这确实是Anaconda 4.2中的一个错误,因为他们忘了发送python3.dll。他们已经在下一个版本中解决了这个问题,但遗憾的是4.2是默认使用Python 3.5的最后一个版本。如果您遇到Python 3.5(例如VS2015只知道版本高达3.5),那么您必须按照@ Ramesh-X的回答手动下载python3.dll。

  • 如果您可以继续使用Python 3.6(如果您使用的是OpenCV和VS2015,目前有点难度),那么只需安装最新的Anaconda版本,您就不必处理其中的任何一个。< / p>

答案 4 :(得分:6)

对此有很多问题和建议。对于最新的Opencv 3.4.16和Python 3.6 / 3.7,他们都没有帮助我。 最后,我切换到Pyhon 2.7.15并安装了opencv 3.1.0。 DLL问题解决了。

当我使用依赖项遍历器查看cv2.pyd时,3.1对缺少的一个dll没有依赖性。 Opencv 3.4 具有对此DLL的缺少的依赖项:

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

可能是问题所在。

P.S .:我有Win7专业版64Bit,32Bit Python 2.7.15

答案 5 :(得分:5)

最近,我在Azure Windows Server 2012 r2 中遇到了类似的问题。尝试使用和不使用Anaconda的所有选项,但是没有一个帮助。经过大量调查,我发现缺少与Window Media Service相关的 mfplat.dll

因此,您必须手动安装功能,以便获取与窗口媒体服务相关的dll。

1。打开或关闭Windows功能

2。跳过角色屏幕,直接转到功能屏幕

3。在“用户界面和基础结构”下选择“桌面体验”

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

因此,如果您打算在云(Window Server)中运行代码,请不要忘记选择“桌面体验”功能。

答案 6 :(得分:1)

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

答案 7 :(得分:1)

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

答案 8 :(得分:1)

我对python 3.6(Anaconda3)和OpenCV 3.4.1遇到了同样的问题,以使spyder正常工作。即使将cv2.pyd复制到Anaconda3 Users / home / Anaconda3 / Lib / site-packages之后,它也无法正常工作。

但是找到了解决方法

后来,我在Anaconda上安装了OpenCV和Dlib,并将生成的cv2.cp36-win_amd64.pyd和dlib.cp36-win_amd64.pyd复制到Anaconda3 Users / home / Anaconda3 / Lib / site-packages中。这些可以从环境文件夹C:\ Users \ home \ Anaconda3 \ envs \ opencv \ Lib \ site-packages复制。

最终间谍开始工作

答案 9 :(得分:0)

如果这可以帮助某人在官方python 3.6 Windows docker映像上使此事情正常运行,我必须从桌面上复制以下库:

C:\ windows \ system32

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`

答案 10 :(得分:0)

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

conda 安装 opencv

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

但是,当我尝试使用 python 解释器从 pydev 内部运行代码以用于我激活的特定 anaconda 环境时,pydev 在导入 opencv 时找不到它正在寻找的任何 dll。

设置以下环境变量解决了问题:

CONDA_DLL_SEARCH_MODIFICATION_ENABLE=1

来源:PyDev/Eclipse not loading _mklinit when run from a Conda environment

指向不同库加载问题的故障排除说明:https://docs.conda.io/projects/conda/en/latest/user-guide/troubleshooting.html#numpy-mkl-library-load-failed

答案 11 :(得分:0)

此错误可能是由于缺少以下dll引起的 enter image description here

要安装此dll: https://www.microsoft.com/en-us/software-download/mediafeaturepack 如上文所述

答案 12 :(得分:0)

就我而言,Windows 10的主要更新删除了一些Windows软件包,因此其他方法(重新安装opencv等)无济于事。要修复它,请安装:

a)Microsoft Visual C++ Redistributable for Visual Studio 2015, 2017 and 2019

b)Media Feature Pack for N versions-仅当您使用Windows 10 N时才需要

两者都需要重新启动PC。

答案 13 :(得分:0)

就我而言,我必须安装旧版本的openCV(Windows 10,Python 3.6.8)

pip install opencv-python==3.3.0.9

答案 14 :(得分:0)

坦率地说,这里有很多非常聪明和复杂的答案。我的笨拙而简单。我删除了conda环境,从头开始重新安装,并尽力先安装opencv 。这解决了我的问题。环境本应是暂时且透明的,所以不要过于依恋。

因此,如果首先将我的环境称为fubar,请确保取消激活每个实例(包括正在使用它的所有IDE)。然后将其删除:

conda remove --name fubar --all

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

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

然后从那里去。我总是(总是)总是最后安装Spyder,因为如果不这样做,它会把事情搞砸。

答案 15 :(得分:0)

我遇到了同样的问题,花了整整3天的时间与之搏斗。我尝试了所有建议的方法:升级pip,更新Visual C ++,更新Anaconda,手动下载文件以及基本上可以在网上找到的所有解决方案。这是最终有效的方法,它可能会对其他人有所帮助:

1-我放弃了基于Python 3和Anaconda的下载,因为我注意到它们存在一些问题,而是下载了Python 2.7.16 64位。

2-导航至Pip在驱动器上的位置(对我而言,路径为C:\ Python27 \ Scripts),通过选择该路径来突出显示该路径,然后键入“ cmd”,然后输入,命令提示符将在该路径上打开(我注意到跳过此路径通常会导致一些错误)

3-使用CMD上的.map()更新了点数(再次,跳过并没有更新它并没有使此过程通过)

4-https://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv下载了相应的python -m pip install --upgrade pip文件(尝试了几种适用于我的文件后,是opencv_python-2.4.13.7-cp27-cp27m-win_amd64。我将其复制粘贴到Pip所在的同一文件夹中(对我而言是C:\ Python27 \ Scripts),然后使用Wheel通过CMD安装。始终通过CMD在该路径上打开,如第2步所示

5-在步骤4之后,当我使用pip install opencv_python-2.4.13.7-cp27-cp27m-win_amd64.whl导入OpenCV时,我不再有DLL错误,而是与numpy有关的错误(因为我刚刚安装了该版本的Python因此尚未安装Numpy)。我通过输入import cv2和voilà来安装numpy!问题已解决,OpenCV正确导入。

希望这对某人有帮助。

答案 16 :(得分:0)

我在 Windows 10(N)上遇到了这个问题,并安装了基于Python 3.7(OpenCV 4.0版)的新Anaconda。以上建议均无济于事(例如从非官方站点安装OpenCV或安装VC Redistributable)。

我根据this github issue使用...\AppData\Local\conda\conda\envs\foo\Lib\site-packages\cv2\cv2.cp37-win_amd64.pyd检查了dumpbin.exe的DLL依赖性。我注意到一个MF.dll库,我发现它属于Windows Media Foundation。

所以我安装 Media Feature Pack for N versions of Windows 10并解决了问题!

答案 17 :(得分:0)

请记住,如果要为Windows安装python软件包/库,

您应该始终考虑使用Python unofficial Binaries

第1步:

搜索您的软件包,下载相关的2.7或3.6版本,您可以在Downloads / your_package_version.whl下找到它,名为python wheel

第2步:

现在使用pip安装

pip install ~/Downloads/your_packae_ver.whl

这将安装没有任何错误。

答案 18 :(得分:0)

问题是由于Anaconda3中缺少python3.dll文件。

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

您可以通过下载Python's Release page底部提供的二进制文件并从ZIP文件中提取python3.dll来获取python3.dll

答案 19 :(得分:0)

(基础)C:\ WINDOWS \ system32&gt; conda安装C:\ Users \ Todd \ Downloads \ opencv3-3.1.0-py35_0.tar.bz2

我从anaconda终端运行此命令后,我从中下载了该版本 https://anaconda.org/menpo/opencv3/files

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

答案 20 :(得分:0)

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

答案 21 :(得分:0)

我有同样的问题。当我安装WinPython编程,并从我的opencv目录复制cv2.pyd文件后运行opencv,它将是这样的:C:\ Users ..... \ Downloads \ opencv \ build \ python \ 2.7 \ x64,x64或x86取决于您的32位或64位设备。并粘贴到C:\ Users ..... \ Downloads \ WinPython-64bit-3.5.4.1Qt5 \ python-3.5.4.amd64 \ Lib \ site-packages,我更喜欢上一个python 3.5而不是3.6。因为当我&#34;导入cv2&#34;安装(python 3.6)它直接显示:&#34; ImportError:DLL加载失败:找不到指定的模块&#34; 然后我安装python 3.5并打开WinPyhton命令提示符并输入&#34; pip install opencv-python&#34;。

命令提示符自动下载opencv,它显示了这样的过程&#34;已成功安装opencv-python-3.3.0.10&#34;

最后,我尝试按类型&#34运行open cv; import cv2&#34;,它可以工作 我尝试输入&#34; cv2。版本&#34;,并显示:&#39; 3.3.0&#39;

答案 22 :(得分:-3)

使用以下方法安装python:

  • pip install opencv-python(需要最新版本)

确保opencv-python安装在路径(\ Python \ Python36 \ Lib \ site-packages)中, 你会在那里找到cv2文件夹。

检查cv2的版本: 导入cv2 打印(CV2 .__版本__)