引言
图像反转(反色)是将图像的灰度值反转,若图像灰度级为 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')
实验
参考
插画
【画师】森倉円 【P站ID】78693898
|