python - 为什么 SciKit 的分水岭功能太慢?
问题描述
我对 OpenCV、Skimage(SciPy) 和 BoofCV 中的分水岭函数的执行时间进行了比较。尽管 OpenCV 似乎比其他两个快得多(平均时间:10 个样本的 0.0031 秒),但 Skimage 的执行时间差异很大(从 0.03 到 0.554 秒)。我想知道为什么会这样?它不应该是本机python函数吗?
解决方案
如果没有更多详细信息,很难知道您的特定应用程序运行缓慢的原因。不过,一般来说,scikit-image 代码不如 OpenCV 优化,但涵盖了更多用例。例如,它可以使用浮点值作为输入,而不仅仅是 uint8,它可以使用 3D 甚至更高维度的图像。
关于性能:OpenCV 使用高度优化的 C/C++ 编码,而 scikit-image 使用 Cython 编码,Cython 是一种将 Python 代码编译为 C 的混合语言,实现了 C 性能。但是,Cython 中没有几个优化,正如我上面提到的,实际实现的内容存在差异,从而导致性能差异。
推荐阅读
- r - 如何在 r 块选项中使用 if else 语句将丢失的图像替换为默认图像
- html - 动态添加的模态不会触发
- azure - EJBCA(JEE 应用程序)部署后关闭的端口
- sql - 为什么我不断收到此错误?(8,5): PL/SQL: 语句被忽略
- typescript - 如何通过 Jest(通过 @InjectQueue 的 DI)测试 Nest Bull 队列?
- kotlin - 如何制作每次都具有相同实例的媒体播放器
- web-services - Google Place API 反缓存规则是否有任何受支持的解决方法?
- javascript - 未找到模块 - 尝试使用 react-native 和 react-native-tts
- javascript - 仅在加载某些变量后如何在 React 中触发 useEffect
- excel - 在excel vba中复制每行最后一列的值