Tra*_*isJ 5 image matplotlib python-2.7
我正在编写一些脚本来进行图像处理(准备用于卷积神经网络的大批量图像数据).作为该过程的一部分,我将一个大图像拼贴成许多较小的图像.单个大图像是3通道(RGB).png图像.但是,当我matplotlib.image.imsave用来保存图像时,它变成了4通道.下面是一个最小的代码工作示例(注意python 2.7).
#!/usr/bin/env python
import matplotlib.image as mpimg
original_image = mpimg.imread('3-channel.png')
print original_image.shape
mpimg.imsave('new.png', original_image)
unchanged_original_image = mpimg.imread('new.png')
print unchanged_original_image.shape
Run Code Online (Sandbox Code Playgroud)
其输出是:
(300,200,3)
(300,200,4)
我的问题是:为什么matplotlib.image.imsave迫使第4频道出现?(最重要的是)我该怎么做才能确保只保存3个颜色通道(RGB)?
我创建的示例图像如下:
如果不需要matplotlib你可以使用scipy.misc.toimage()
import matplotlib.image as mpimg
import scipy.misc
original_image = mpimg.imread("Bc11g.png")
print original_image.shape
# prints (200L, 300L, 3L)
mpimg.imsave('Bc11g_new.png', original_image)
unchanged_original_image = mpimg.imread('Bc11g_new.png')
print unchanged_original_image.shape
# prints (200L, 300L, 4L)
#now use scipy.misc
scipy.misc.toimage(original_image).save('Bc11g_new2.png')
unchanged_original_image2 = mpimg.imread('Bc11g_new2.png')
print unchanged_original_image2.shape
# prints (200L, 300L, 3L)
Run Code Online (Sandbox Code Playgroud)
请注意,scipy.misc.toimage 自 v1.0.0 起已弃用,并将在 1.2.0 中删除 https://docs.scipy.org/doc/scipy-1.2.1/reference/ generated/scipy.misc.toimage .html