PIL和使用Python进行图像处理的新手,可能只是缺少基本功能。
我正在尝试对一个UHD图像应用多个蒙版,以创建仅显示每个蒙版覆盖的像素的多个输出图像。
所有图像都具有完全相同的尺寸,蒙版具有黑色区域。
从我的UHD源图像(取自NaturalEarth的道路图层)中,我想创建一个新的(用于序列)显示透明度和蒙版覆盖的区域的确切像素值。未被掩模遮盖的区域(白色)应完全透明。
我让它正常工作,但是,这要花很长时间,并且我想对1000个以上的蒙版进行此操作,以产生相同数量的最终序列图像。
这是我到目前为止所做的:
from PIL import Image
imgDim = (4096, 2048)
sourceImg = Image.open('4K_roads0p05.png')
imgSeqMasks = ["gcMask_Stockholm_7400.png"]
for img in imgSeqMasks:
blank_image = Image.new("RGBA", imgDim)
i = Image.open(str(img))
rgbai = i.convert('RGBA')
if i.size == imgDim:
for x in range(imgDim[0]):
for y in range(imgDim[1]):
r, g, b, a = rgbai.getpixel((x, y))
if (r, g, b, a) == (0, 0, 0, 255):
rsrc, gsrc, bsrc, asrc = sourceImg.getpixel((x, y))
blank_image.putpixel((x, y), (rsrc, gsrc, bsrc, asrc))
blank_image.save('stockholmRoadsAnim_'+str(img)+'.png')
我显然用单个图像替换了mask序列文件夹,然后首先对其进行测试。如果将其设置为x范围(2100,2120)和y范围(450,470),这是结果
good result for area appr. Belgium/Luxembourg
original Image (source image layer)
and one of the many mask images I used for this
这只是20 x 20像素,需要109.763999939 s
有什么想法可以加快速度吗?