首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >“OpenCvSharp.Internal.NativeMethods”的类型初始化程序引发了一个异常

“OpenCvSharp.Internal.NativeMethods”的类型初始化程序引发了一个异常
EN

Stack Overflow用户
提问于 2022-02-23 10:52:30
回答 1查看 910关注 0票数 1

我目前正在使用OpenCVSharp4修复旋转/扭曲的图像。

代码语言:javascript
复制
    public static void FixImagePerspective(string fullPath, PointF[] pointsArray)
    {
        Bitmap srcImg = Image.FromFile(fullPath) as Bitmap;

        var width = srcImg.Width;
        var height = srcImg.Height;

        Mat src = Cv2.ImRead(fullPath);
        var dst = new Mat();

        var dsize = new OpenCvSharp.Size(width, height);
        var srcTri = new Mat(4, 1, MatType.CV_32FC2, pointsArray);
        var dstTri = new Mat(4, 1, MatType.CV_32FC2, new int[] { 0, 0, height, 0, height, width, 0, width });

        var M = Cv2.GetPerspectiveTransform(srcTri, dstTri);

        Cv2.WarpPerspective(src, dst, M, dsize, InterpolationFlags.Linear, BorderTypes.Constant, new Scalar());

        Cv2.ImWrite($"C:\\tmp\\Fixed\\{name}_{count}_corrected.jpg", dst);
    }

这个功能在我的本地机器上正常工作。但是当将它部署到windowsservercore-ltsc2019 Docker容器中时。一旦到了Cv2.ImRead,它就会抛出以下异常

代码语言:javascript
复制
The type initializer for 'OpenCvSharp.Internal.NativeMethods' threw an exception

我尝试使用依赖项-walker来查找容器中缺少的*.dll文件并相应地复制它,但是它解决不了这个问题。我也尝试过在码头容器上安装vc_redist,但是它也没有解决这个问题。

在docker容器中运行OpenCVSharp4似乎存在问题。我已经安装了OpenCvSharp4.runtime.win软件包。但这不管用

我用mcr.microsoft.com/dotnet/framework/runtime:4.8-windowsservercore-ltsc2019做我的码头集装箱。

任何关于如何解决这个问题的建议

EN

回答 1

Stack Overflow用户

发布于 2022-03-29 10:30:19

根本原因可能是服务器核心中不存在的一些Windows组件。

作为快速修复,您可以使用完整的windows容器mcr.microsoft.com/windows (现在由mcr.microsoft.com/server代替)。

Windows容器/主机兼容性很棘手,但我认为mcr.microsoft.com/windows:1809与您的ltsc2019相当。

一旦运行了它,您就可以使用dockerfile中的多个层对服务器核心容器进行从完整api容器复制dll。

有一个关于依赖于Windows (默认情况下在Windows上不存在)的公开github发行,其中有一个可以复制以解决问题的方便的dll文件列表.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71235566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档