PIL的ImageChops模块功能

ImageChops模块包含许多算术图像操作,称为通道操作(“chops”)。这些可用于各种目的,包括特殊效果,图像合成,算法绘画等。

首先在使用前要From PIL import ImageChops

ImageChops.add(img1, img2, scale = 1.0, offset = 0)

添加两个图像,按比例划分结果并添加偏移量。如果省略,则缩放默认为1.0,偏移为0.0。至少一个图像必须具有模式“1”(1位像素,黑白,每字节存储一个像素)

im = ImageChops.add(im1, im2, scale=2, offset=1) # 即out = ((image1 + image2) / scale + offset)

ImageChops.subtract(img1, img2, scale = 1.0, offset = 0)

减去两个图像,按比例划分结果并添加偏移量。如果省略,则缩放默认为1.0,偏移为0.0。至少一个图像必须具有模式“1”

im = ImageChops.subtract(im1, im2, scale=0.5, offset=1) # 即out = ((image1 - image2) / scale + offset)

ImageChops.add_modulo(img1, img2)

添加两个图像,不剪切结果。至少一个图像必须具有模式“1”。

im = ImageChops.add_modulo(im1, im2) # out = ((image1 + image2) % MAX)

ImageChops.subtract_modulo(img1, img2)

减去两个图像,不剪切结果。至少一个图像必须具有模式“1”。

im = ImageChops.subtract_modulo(im1, im2) # out = ((image1 - image2) % MAX)

ImageChops.constant(image, value)

填充具有给定灰度级的通道。

im = ImageChops.constant(im1, 100)

ImageChops.darker(img1, img2)

逐个像素地比较两个图像,并返回包含较暗值的新图像。至少一个图像必须具有模式“1”。

im = ImageChops.darker(im1, im2) # out= min(img1, img2)

ImageChops.difference(img1, img2)

返回两个图像之间逐像素差异的绝对值。至少一个图像必须具有模式“1”。

im = ImageChops.difference(im1, im2) # out = abs(image1 - image2)

ImageChops.invert(img)

反转图像(通道)

im0 = ImageChops.invert(im) # out = MAX - image

ImageChops.lighter(img1, img2)

逐个像素地比较两个图像,并返回包含较亮值的新图像。至少一个图像必须具有模式“1”。

im = ImageChops.lighter(im1, im2) # out= max(img1, img2)

ImageChops.logical_and(img1, img2)

两个图像之间的逻辑AND。至少一个图像必须具有模式“1”。

im1 = Image.open('timg.jpg').convert('1')
im2 = Image.open('IMG3.jpg').convert('1') # 如果我未将两张图片convert('1'),logical_and会报错
im = ImageChops.logical_and(im1, im2) # out = ((image1 and image2) % MAX)

ImageChops.logical_or(img1, img2)

两个图像之间的逻辑或。至少一个图像必须具有模式“1”。

im1 = Image.open('timg.jpg').convert('1')
im2 = Image.open('IMG3.jpg').convert('1')
im = ImageChops.logical_or(im1, im2) # out = ((image1 or image2) % MAX)

ImageChops.logical_xor(img1, img2)

两个图像之间的逻辑异或。至少一个图像必须具有模式“1”。

im1 = Image.open('timg.jpg').convert('1')
im2 = Image.open('IMG3.jpg').convert('1')
im = ImageChops.logical_xor(im1, im2) # out = ((bool(image1) != bool(image2)) % MAX)

ImageChops.multiply(img1, img2)

将两个图像叠加在一起。如果将图像与纯黑色图像相乘,则结果为黑色。如果乘以纯白图像,则图像不受影响。至少一个图像必须具有模式“1”。

im1 = Image.open('timg.jpg')
im2 = Image.open('IMG3.jpg')
im = ImageChops.multiply(im1, im2) # out = img1 * img2 / MAX

ImageChops.offset(img, xoffset, yoffset = None)

返回图像的副本,其中数据已被给定距离偏移。数据包裹在边缘。如果省略yoffset,则假定它等于xoffset

im = ImageChops.offset(im2, 100,250)

图像为:

ImageChops.screen(img1, img2)

将两个倒置的图像叠加在一起。至少一个图像必须具有模式“1”。

im = ImageChops.screen(im1, im2) # out = MAX - ((MAX - image1) * (MAX - image2) / MAX)

 

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值