Python 为什么调整图像大小会导致频道增加?
我有不同维度的灰度图像,所以我需要将它们转换为相同维度(比如28*28)进行实验。我试着用不同的方法来做,我也能做到,但我观察到图像的大小会导致通道数量的增加。我是python和图像处理新手,请帮助我Python 为什么调整图像大小会导致频道增加?,python,image,resize,grayscale,channels,Python,Image,Resize,Grayscale,Channels,我有不同维度的灰度图像,所以我需要将它们转换为相同维度(比如28*28)进行实验。我试着用不同的方法来做,我也能做到,但我观察到图像的大小会导致通道数量的增加。我是python和图像处理新手,请帮助我 from PIL import Image image = Image.open('6.tif') image = image.resize((28, 28), Image.ANTIALIAS) image.save('6.png', 'PNG', quality=100) 下面的代码显示了不
from PIL import Image
image = Image.open('6.tif')
image = image.resize((28, 28), Image.ANTIALIAS)
image.save('6.png', 'PNG', quality=100)
下面的代码显示了不同的维度:
import imageio
image_data = imageio.imread("6.tif").astype(float)
print(image_data.shape)
image_data = imageio.imread("6.png").astype(float)
print(image_data.shape)
结果是:
(65, 74)
(28, 28, 4)
我不需要最后一个维度。这是怎么回事?即使使用“从resizeimage导入resizeimage”,我也会得到类似的结果。您的代码存在许多问题
如果你希望看到灰度图像,请确保得到的是灰度图像。因此,改变这一点:
image = Image.open('6.tif')
致:
调整图像大小时,需要使用正确的重采样方法之一:
- 最近的
- PIL.Image.BOX
- 双线性
- 比尔哈明
- PIL.Image.BICUBIC
- 皮尔·Image.LANCZOS
ANTI_别名
替换为这一行上面列表中的内容:
image = image.resize((28, 28), Image.ANTIALIAS)
当您保存为PNG时,它总是少丢失。质量因子的工作原理与JPEG图像的工作原理不同,因此您应该忽略它,除非您很好地了解它如何影响PNG编码器
如果你做出这些改变,特别是第一个,我认为你的问题会消失。请记住,PNG编码器可能拍摄RGB图像并将其保存为托盘图像,也可能拍摄灰度图像并将其编码为RGB或RGB alpha。请共享您的图像。谢谢标记!感谢您的解决方案和及时回复。没错,第一部分解决了这个问题,即通过添加.convert('L')。我早些时候尝试过这个,但错误的是。convert(“LA”)。酷-很高兴它对你有用。祝你的项目好运。谢谢你,马克·塞切尔!即使我这样做,我也会得到4个通道:img=Image.open(路径到img);img=img.resize((512,512))。
image = image.resize((28, 28), Image.ANTIALIAS)