cv2、scipy.misc和skimage之间的区别

5

这些方法有什么主要区别:

  • cv2.imread / resize/ imwrite
  • scipy.misc.imread / imresize/ imsave
  • skimage.io.imread / skimage.transform.resize / skimage.io.imsave

如何决定使用哪个方法?

我知道cv2skimage有不同的编码器,并且cv2默认使用'BGR'而不是'RGB'。但有时脚本可能会同时使用它们,例如main.py,其中使用scipy.misc.imreadcv2.imresizecv2.imwrite。我想知道这样做的原因。

1个回答

10

scipy.misc 模块是历史遗留问题,用于聚集一些不适合放在其他 SciPy 子模块中的函数。 它已被列为即将废弃的模块,因此不应使用。

在 Python 生态系统中,我建议使用 imageio 来读取图像(或者如果您已经使用 matplotlib,可以使用 matplotlib.pyplot.imread )。

Scikit-image 作为 skimage.io 为所有 I/O 库提供了方便的包装器(它应该会拾取您系统上已安装的任何库)。 它还确保将图像转换为与其他 skimage 函数一起使用的正确数据类型和范围格式(请参见 http://scikit-image.org/docs/dev/user_guide/data_types.html )。

cv2.imread 等操作 OpenCV 图像对象,并且如您已经观察到的那样,这些图像通常以 BGR 存储器布局方式存储。 但是对于加载 PNG 和 JPG,上述大多数库都封装了相同的基础 C 库,可能具有稍微不同的压缩参数等。

我建议您使用尽可能减少脚本/软件包依赖关系的函数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接