我正在使用PIL和numpy来组合两个图像,而一个是.jpg,另一个图像由一个numpy数组表示,它定义了一个我想要放在原始图像上的面具(基本上只是一个矩阵,其中一个和零条目以及与.jpg相同的大小。 PIL的复合函数适用于此,但由于某种原因,在保存合成图像后,文件大小缩小到原始图像大小的大约1/3。有人可以向我解释这种行为吗?
以下是代码段:
import numpy as np
import PIL
from PIL import Image
from PIL import ImageColor
rgb = ImageColor.getrgb('black')
# Read image and write into numpy array
image = Image.open('test_image.jpg')
(im_width, im_height) = image.size
# Create empty mask
mask = np.zeros((im_width, im_height))
# Composite image and mask
solid_color = np.expand_dims(np.ones_like(mask), axis=2) *
np.reshape(list(rgb), [1, 1, 3])
pil_solid_color =
Image.fromarray(np.uint8(solid_color)).convert('RGBA')
pil_mask = Image.fromarray(np.uint8(255.*mask)).convert('L')
image = Image.composite(pil_solid_color, image, pil_mask)
# save image
image.save('test_image_with_mask.jpg')
代码的灵感来自tnesorflow的对象检测API。提前谢谢。