opencv - 在 nanoserver Docker 容器中使用 OpenCV 运行 .NET Core 2.0 C# 模块

标签 opencv .net-core docker-for-windows azure-iot-edge docker

我有一个非常基本的 C# .NET Core 2.0 应用程序,它使用 OpenCV 的几个非常基本的功能作为概念证明。

我试图在 nanoserver 容器中运行它,最终部署为 IoT Edge 模块,但我收到一条错误消息,提示它无法找到 DLL 文件。

Unhandled Exception: System.TypeInitializationException: The type initializer for 'OpenCvSharp.NativeMethods' threw an exception. --->
System.DllNotFoundException: Unable to load DLL 'OpenCvSharpExtern': The specified module could not be found. (Exception from HRESULT: 0x8007007E)

我试过只用 dotnet publish IoTCoreCSharp.csproj 编译和 dotnet publish IoTCoreCSharp.csproj --runtime win10-x64 --configuration Debug --force ,两者都没有运气。

我的 Docker 文件如下所示:
FROM microsoft/dotnet:2.0.0-runtime-nanoserver-1709

ARG EXE_DIR=.

WORKDIR /app

COPY $EXE_DIR/ ./

COPY system32_opencvsharp_deps/ C:/Windows/System32

CMD ["dotnet" "IoTCoreCSharp.dll"]

system32_opencvsharp_deps 包含 avicap32.dll、avifil32.dll、msacm32.dll、msvfw32.dll 和 vcruntime140.dll。 OpenCvSharpExtern.dll 位于我们正在执行的 DLL 文件目录的根目录中。

该程序在 windowsservercore 中运行在我的开发机器上完美安装了 .NET 的基于图像的图像,但是这种图像不能在我们需要的 Windows 10 IoT Core 上运行。

尝试在 IoT Core 上运行时出错:
c:\Program Files\docker\docker.exe: Error response from daemon: container
e9da3baa806f161153fdb7f60a9401a5ff46c32a959499cbe0bd822b1fc0dda3 encountered an error during Start: failure in a
Windows system call: The compute system exited unexpectedly. (0xc0370106).

最佳答案

您可以引用this sample .此示例展示了如何在以 microsoft/dotnet-framework:4.7.1-windowsservercore-1709 作为基础镜像的 Windows 容器中运行 OpenCVSharp。它表明您遇到了同样的问题。

关于opencv - 在 nanoserver Docker 容器中使用 OpenCV 运行 .NET Core 2.0 C# 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49848035/

相关文章:

.net-core - 如何使用 blazor 绑定(bind)文档事件

c# - 空安全字符串

docker - 如何修复由于hns错误而不会重新启动的docker daemon

docker - 如何打开/运行 YML 撰写文件?

c - 称为 PRUNING 的图像处理技术

python - OpenCV(cv2)Python findChessboardCorners 在看似简单的棋盘上失败

python - OpenCV 和 Python 中的瞳孔检测

python - 如何使用非自由模块为 Python 构建 OpenCV 3.0.0?

authentication - 在中心位置或组件中捕获错误

iis - 远程连接到Dockerized IIS