是否可以在 Python 图像库 (PIL) 中屏蔽图像?

wfg*_*geo 2 python image mask image-processing python-imaging-library

我有一些交通摄像头图像,我只想提取道路上的像素。我以前使用过遥感软件,可以指定类似的操作

img1 * img2 = img3

其中 img1 是原始图像,img2 是直接的黑白蒙版。本质上,图像的白色部分将评估为

img1 * 1 = img3

黑色部分的评估结果为

img1 * 0 = img3

因此,人们可以拍摄图像的一部分,让所有不重要的区域变成黑色。

有没有办法使用 PIL 来做到这一点?我找不到任何与我习惯看到的图像代数类似的东西。我尝试过混合功能,但这只会使它们一起消失。我已经阅读了一些关于 numpy 的内容,看起来它可能能够做到这一点,但在我深入研究之前,我想确定在 PIL 中没有直接的方法可以做到这一点。

谢谢。

Mar*_*som 6

Image.composite方法可以做你想做的事。第一个图像应该是表示屏蔽区域的常量值,第二个图像应该是原始图像 - 第三个图像是掩模。


Pra*_*sne 5

您可以使用 PIL 库来屏蔽图像。将 alpha 参数添加到 img2,因为您不能仅将此图像粘贴到 img1 上。否则,你将看不到下面的内容,你需要添加一个 alpha 值。

img2.putalpha(128)#如果你输入0,它将完全透明,保持图像不透明

然后你可以屏蔽这两个图像 img1.paste(im=img2, box=(0, 0), mask=img2)