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

Difference between cv2, scipy.misc and skimage

cv2.imread / resize/ imwritescipy.misc.imread / imresize/ imsaveskimage.io.imread / skimage.transform.resize / skimage.io.imsave 之间的主要区别是什么以及如何决定使用哪一个?

我知道 cv2skimage 有不同的 encoder, and cv2 use 'BGR' not 'RGB' in default. But sometimes a scripy might use them together, for example main.py,它使用 scipy.misc.imreadcv2.imresizecv2.imwrite。我想知道这样做的原因。

scipy.misc 模块在历史上作为一个地方存在,用于收集不容易放入其他 SciPy 子模块的功能。它已被弃用,不应使用。

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

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

cv2.imread 等人。对 OpenCV 图像对象进行操作,正如您已经观察到的那样,这些图像通常存储在 BGR 内存布局中。但是对于加载 PNG 和 JPG,上面列出的这些库中的大多数都包装了相同的底层 C 库,压缩等参数可能略有不同。

我建议您使用任何函数来最小化脚本/包的依赖足迹。