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导入失败
Python 3.5、OpenCV 3.2、Windows 7 64 位、Anaconda 3、“ImportError:DLL 加载失败”