首页 > 解决方案 > 为什么 SciKit 的分水岭功能太慢?

问题描述

我对 OpenCV、Skimage(SciPy) 和 BoofCV 中的分水岭函数的执行时间进行了比较。尽管 OpenCV 似乎比其他两个快得多(平均时间:10 个样本的 0.0031 秒),但 Skimage 的执行时间差异很大(从 0.03 到 0.554 秒)。我想知道为什么会这样?它不应该是本机python函数吗?

标签: pythontimenativescikit-imagewatershed

解决方案


如果没有更多详细信息,很难知道您的特定应用程序运行缓慢的原因。不过,一般来说,scikit-image 代码不如 OpenCV 优化,但涵盖了更多用例。例如,它可以使用浮点值作为输入,而不仅仅是 uint8,它可以使用 3D 甚至更高维度的图像。

关于性能:OpenCV 使用高度优化的 C/C++ 编码,而 scikit-image 使用 Cython 编码,Cython 是一种将 Python 代码编译为 C 的混合语言,实现了 C 性能。但是,Cython 中没有几个优化,正如我上面提到的,实际实现的内容存在差异,从而导致性能差异。


推荐阅读