【问题标题】:OpenCV Bitmap constructor is very slow on first processOpenCV 位图构造函数在第一个过程中非常慢
【发布时间】:2022-12-08 22:31:58
【问题描述】:

我正在尝试从相机检测文档并使用 OpenCV 裁剪它。当我在本地执行此操作时没有问题,但是当它在测试时工作时,下面的行需要超过 2 分钟。我试图在发布模式下构建我的项目,但没有任何改变。我正在使用 EMGU.CV 4.1.1.3497。让我感到困惑的是:它在事件处理程序中,并且每秒工作超过 1 次。仅第一次加载速度慢。然后它工作得很快。

private void Device_NewFrame(object sender, NewFrameEventArgs eventArgs)
{
    using (Bitmap bitmap = (Bitmap)eventArgs.Frame.Clone())
    {
        using (Image<Bgr, byte> imageCV = new Image<Bgr, byte>(bitmap)) --this row takes 2 minutes on first load
        {
          //finding contour etc.
        }
    }
}

ProcMon 日志:

试图建立在发布模式上。 试图在本地添加测试我所有的 dll 版本。 在不同的设备和相机上尝试过。

【问题讨论】:

  • 我的猜测是加载或编译库时出现某种超时。我会建议一些分析器来查看时间花在哪里。 Process Monitor 也可用于检查系统调用以及是否存在奇怪的故障。
  • 嗨乔纳,感谢您的回复。我没有看到特定的失败,但是当我使用 procman 进行控制时,我可以看到读取文件 opencv_videoio_ffmpeg411.dll 花费了超过 1 分钟的时间。您有什么建议可以避免这种情况吗?我在上面添加了一些日志。

标签: c# .net opencv object-detection emgucv


【解决方案1】:

从跟踪来看,它似乎是从\path... 读取的,我认为这是一个网络驱动器。我强烈建议所有程序文件都从本地驱动器运行。 IE。只需将程序复制到本地文件夹即可。

网络驱动器的延迟可能比本地驱动器高得多。如果有很多小读取,这可以加起来。

这听起来很符合您的体验,当您在本地运行它时一切正常。一旦它实际加载了所有文件,它也可以正常运行。

【讨论】:

    猜你喜欢
    • 2010-12-11
    • 2020-12-22
    • 2021-02-01
    • 2018-03-22
    • 2023-03-20
    • 2018-08-06
    • 1970-01-01
    • 2011-04-02
    • 1970-01-01
    相关资源
    最近更新 更多