Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pyvips图像合成未按预期工作_Python_Vips - Fatal编程技术网

Python pyvips图像合成未按预期工作

Python pyvips图像合成未按预期工作,python,vips,Python,Vips,尝试使用pyvips 2.1.5合成图像时: import pyvips i1 = pyvips.Image.black(100, 100, bands=4) + (255, 0, 0, 128) i2 = pyvips.Image.black(10, 10, bands=4) + (0, 255, 0, 128) i1.composite(i2, 'over').write_to_file('output.png') 它输出10x100px大小的绿色平方,而不是预期的100x100pxα混

尝试使用pyvips 2.1.5合成图像时:

import pyvips

i1 = pyvips.Image.black(100, 100, bands=4) + (255, 0, 0, 128)
i2 = pyvips.Image.black(10, 10, bands=4) + (0, 255, 0, 128)
i1.composite(i2, 'over').write_to_file('output.png')
它输出10x100px大小的绿色平方,而不是预期的100x100pxα混合平方

另外,合成多个图像文件(
pyvips.image.new_from_file
)似乎也可以,但使用上面生成的图像之一进行合成失败,原因是:

pyvips.error.Error: unable to call composite
composite: images do not have same numbers of bands
即使所有图像的
波段
返回
4

我用错了吗? 谢谢你的帮助

您的
black()+(1,2,3,4)
将生成一个四波段图像,并将
解释设置为
多波段
。这将被
composite
解释为带有三个额外alpha通道的单色图像(可能不是最佳猜测)

您需要将解释设置为sRGB。您不需要将黑色的
波段设置为4,它将由
+
的RHS自动调高

尝试:

使:

同样的技巧也可以解决你在图像文件中合成黑色的问题

import pyvips

i1 = (pyvips.Image.black(100, 100) + (255, 0, 0, 128)).copy(interpretation="srgb")
i2 = (pyvips.Image.black(10, 10) + (0, 255, 0, 128)).copy(interpretation="srgb")
i1.composite(i2, 'over').write_to_file('output.png')