ImageMath
模块¶
这个 ImageMath
模块可用于计算“图像表达式”。该模块提供一个 eval()
函数,它获取表达式字符串和一个或多个图像。
示例:使用 ImageMath
模块¶
from PIL import Image, ImageMath
im1 = Image.open("image1.jpg")
im2 = Image.open("image2.jpg")
out = ImageMath.eval("convert(min(a, b), 'L')", a=im1, b=im2)
out.save("result.png")
表达式语法¶
表达式是标准的python表达式,但它们是在非标准环境中计算的。您可以像往常一样使用pil方法,加上以下一组运算符和函数:
标准操作员¶
您可以使用标准的算术运算符进行加法(+)、减法(-)、乘法(*)和除法(/)。
该模块还支持一元减号(-)、模(%)和幂(**)运算符。
请注意,根据需要,所有操作都是用32位整数或32位浮点值完成的。例如,如果添加两个8位图像,结果将是一个32位整数图像。如果将浮点常量添加到8位图像中,结果将是32位浮点图像。
您可以使用 convert()
, float()
和 int()
功能描述如下。
位运算符¶
该模块还提供对单个位进行操作的操作。这包括和(&)或()和独占或(^)。您还可以反转(~)所有像素位。
注意,在应用按位运算之前,操作数被转换为32位有符号整数。这意味着,如果反转普通灰度图像,将得到负值。您可以使用and(&)运算符屏蔽不需要的位。
位运算符不适用于浮点图像。
逻辑运算符¶
逻辑运算符 and
, or
和 not
处理整个图像,而不是单个像素。
空图像(所有像素为零)将被视为假。所有其他图像均视为真。
注意 and
和 or
返回上次计算的操作数,但不总是返回布尔值。