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

Posted Xavier Jiezou

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python图像反转/反色的三种方法(pillow)相关的知识,希望对你有一定的参考价值。

引言

图像反转(反色)是将图像的灰度值反转,若图像灰度级为 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

以上是关于Python图像反转/反色的三种方法(pillow)的主要内容,如果未能解决你的问题,请参考以下文章

按钮图像看起来是反色的

OpenCV 完整例程38. 图像的反色变换(图像反转)

python中反转列表的三种方式

python3反转列表的三种方式

python(pillow /tesseract-ocr/pytesseract)安装介绍

剑指offer—单链表反转的三种实现方法