我正在使用Python的Pillow库在将图像发送到设备之前更改它。 我需要更改图像以确保满足以下要求:
- 分辨率(宽度x高度)= 298 x 144
- 灰度
- 颜色深度(位数)= 4
- 格式= .png
到目前为止,我还无法使用Pillow保存4位图像。您可以使用Pillow来减少图像中灰度级的数量:
import PIL.Image as Image
im = Image.open('test.png')
im1 = im.point(lambda x: int(x/17)*17)
im2 = im.point(lambda x: int(x/17))
当你处理一张图像,最终只有16个不同的值(0、1、2...15),这些值可以适用于uint4类型。但是,如果你使用Pillow保存这样的图像
im2.save('test.png')
这个PNG文件仍然保持8位的色深(如果你打开图像,你只会看到非常暗的灰色像素)。你可以使用PyPng保存真正的4位PNG文件:
import png
import numpy as np
png.fromarray(np.asarray(im2, np.uint8),'L;4').save('test4bit_pypng.png')
不幸的是,PyPng保存图像的时间似乎要更长一些。
在 ufp.image 模块中使用 changeColorDepth 函数。
import ufp.image
import PIL
im = PIL.Image.open('test.png')
im = im.convert('L') # change to grayscale image
im.thumbnail((298, 144)) # resize to 294x144
ufp.image.changeColorDepth(im, 16) # change 4bits depth(this function change original PIL.Image object)
#if you will need better convert. using ufp.image.quantizeByImprovedGrayScale function. this function quantized image.
im.save('changed.png')
看一个例子:通过改进的灰度缩放进行图像量化。[Python]