两者的主要区别是什么
cv2.imread / resize/ imwrite
scipy.misc.imread / imresize/ imsave
个skimage.io.imread / skimage.transform.resize / skimage.io.imsave
以及如何决定使用哪一个?
我知道cv2
和skimage
有不同的编码器,并且cv2
默认使用'BGR'而不是'RGB'。但是有时候脚本可能会同时使用它们,例如main.py,它使用scipy.misc.imread
,cv2.imresize
和cv2.imwrite
。我想知道这样做的原因。
1条答案
按热度按时间4ktjp1zp1#
scipy.misc
模块一直以来都是用来收集那些不适合其他SciPy子模块的函数的。它已经被弃用,不应该再使用。在Python生态系统中,我推荐使用
imageio
来阅读图像(或者matplotlib.pyplot.imread
,如果您已经在使用matplotlib
)。Scikit-image为所有这些I/O库提供了一个方便的 Package 器
skimage.io
(它应该会拾取你系统上已经安装的任何东西)。它还确保图像被转换为正确的数据类型和范围格式,以便与其他skimage函数一起使用(参见http://scikit-image.org/docs/dev/user_guide/data_types.html)。cv2.imread
等对OpenCV图像对象进行操作,正如您已经观察到的,这些图像通常存储在BGR
内存布局中。但是对于加载PNG和JPG,上面列出的大多数库都 Package 了相同的底层C库,可能在压缩等方面的参数略有不同。我建议您使用任何一个函数来最小化脚本/包的依赖性。