Erode is too slow - Opencv



我正在对Mat应用侵蚀操作,但速度非常慢。

由于在OpenCV中,可以通过两种不同的方式应用它(使用morphologyEx和使用erode)。

我正在测量(大约)它的运行速度,但它们都非常慢!

该部分的代码为:

    int morph_size = 20;
    Mat element = getStructuringElement( MORPH_ELLIPSE, cv::Size( 2*morph_size + 1 , 2*morph_size +1), cv::Point( morph_size, morph_size ) );
    // morphologyEx(imgMascara, imgMascara, MORPH_ERODE, element );
finish_time5 = clock();
    erode( imgMascara, imgMascara, element );
finish_time6 = clock();

其中imgMascaraMat。然后,当我测量从finish_time5finish_time6开始的时间时,我得到:

0.0198s
0.887s

你知道为什么要花太多时间吗?(morphologyExerode这两个函数都会发生这种情况)。

提前感谢

我已经找到了侵蚀缓慢的原因。有三个不同的原因:

  1. 正如@Micka所说,内核大小很大。我减少得越多,它变得越快

但是,我不能这样做,因为我需要这个内核大小。所以我继续寻找另一个原因,并发现:

  1. 内核类型(MORPH_ELLIPSE)。如果我将其更改为MORPH_RECTMORPH_CROSS,它将变得显著更快

由于我的应用程序能很好地与所有这些应用程序配合使用,我只是将其更改为MORP_RECT

  1. 调试->发布:正如@drescherjm告诉我的,我已经将我的项目配置为在发布模式下运行(加上从调试库到发布库的依赖性),这也有助于提高性能。与其说是第二个原因,不如说是一个不错的镜头

感谢大家的评论,帮助我找到这些

相关内容

  • 没有找到相关文章

最新更新