【Python】图像反转/反色的三种方法(pillow)

cover

引言

图像反转(反色)是将图像的灰度值反转,若图像灰度级为 256,则新图的灰度值为 255 减去原图的灰度值。本文介绍了使用 Python 的 pillow 库进行图像反转(反色)的三种方法。

安装

pip install pillow

方法

方法 1🙂

使用 point() 方法对图像所有像素值进行运算,并返回结果。

from PIL import Image


def invert_color(fname):
    im = Image.open(fname)
    im_inverted = im.point(lambda _: 255-_)
    im_inverted.save(fname.replace('.', '_inverted.'))
    return im_inverted


if __name__ == '__main__':
    invert_color('test.jpg')

方法 2😁

使用嵌套 for 循环遍历图像的每个像素点,并进行取反操作。

from PIL import Image


def invert_color(fname):
    im = Image.open(fname)
    px = im.load()
    w, h = im.size
    for i in range(w):
        for j in range(h):
            if type(px[i, j]) == int:
                px[i, j] = 255-px[i, j]
            elif len(px[i, j]) == 3:
                px[i, j] = tuple([255-i for i in px[i, j]])
            elif len(px[i, j]) == 4:
                px[i, j] = tuple([255-i for i in px[i, j][:3]]+[px[i, j][-1]])
            else:
                pass
    im.save(fname.replace('.', '_inverted.'))
    return im


if __name__ == '__main__':
    invert_color('test.jpg')

方法 3😊

直接使用 ImageChops 中定义的反转函数进行图像颜色反转。

from PIL import Image, ImageChops


def invert_color(fname):
    im = Image.open(fname)
    im_inverted = ImageChops.invert(im)
    im_inverted.save(fname.replace('.', '_inverted.'))
    return im_inverted


if __name__ == '__main__':
    invert_color('test.jpg')

实验

原图通道原图反色
1
3

参考

插画

在这里插入图片描述

【画师】森倉円 【P站ID】78693898
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Xavier Jiezou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值