Windows 容器中的 opencv 导入失败(在 Windows Server 2016 上)

Posted

技术标签:

【中文标题】Windows 容器中的 opencv 导入失败(在 Windows Server 2016 上)【英文标题】:opencv import failed in windows container (on Windows Server 2016) 【发布时间】:2017-09-11 01:14:23 【问题描述】:

我在 Windows Server 2016 上运行以下容器来测试我的 opencv-python 环境。

docker run -i --rm python:2.7-windowsservercore

python:2.7-windowsservercore 图像是基于microsoft/windowsservercore 的官方python 图像)

在交互式控制台中,我通过以下方式安装了 opencv-python:

pip install opencv-python

完成后,我通过以下方式测试 opencv-python 包:

python -c "import cv2"

但我收到以下错误:

Traceback (most recent call last): File "<string>", line 1, in <module> File "C:\Python\lib\site-packages\cv2\__init__.py", line 9, in <module> from .cv2 import * ImportError: DLL load failed: The specified module could not be found.

然后我在主机上安装了python-2.7.13(不是在容器内),输入相同的pip安装命令,再次测试python -c "import cv2",它不会报任何错误。我想知道容器中是否缺少一些DLL文件?我应该在容器中安装什么软件包或软件来修复此错误?

【问题讨论】:

您需要在 Windows 服务器核心安装中尝试它,看看它是否有效 【参考方案1】:

基于the accepted answer to this question,我会把钱放在你没有所需的 MSVC 运行时。假设它是使用 Visual Studio 2015 编译的,运行时可以从 Visual C++ Redistributable for Visual Studio 2015 下载

【讨论】:

tks,我考虑过Visual C++ Redistributable for Visual Studio 2015(x86 和x64),但尝试后还是不行。顺便说一句,即使在主机上,最新的 opencv 也不需要Visual C++ Redistributable for Visual Studio 2015,安装 pip 后它会运行良好。【参考方案2】:

我找到了解决方案in this place.

将以下文件从您的主机复制到容器的 \System32 文件夹中:

msacm32.dll avifil32.dll avicap32.dll msvfw32.dll

【讨论】:

以上是关于Windows 容器中的 opencv 导入失败(在 Windows Server 2016 上)的主要内容,如果未能解决你的问题,请参考以下文章

Bash for Windows 10中的py-opencv导入错误

导入opencv并获取numpy.core.multiarray导入失败

导入 cv2 (opencv) 时出现“DLL 加载失败”

Numpy 和 OpenCV

cv2导入失败原因及安装opencv后仍报错的解决方式

Python 3.5、OpenCV 3.2、Windows 7 64 位、Anaconda 3、“ImportError:DLL 加载失败”