引言
圖像反轉(zhuǎn)(反色)是將圖像的灰度值反轉(zhuǎn)指煎,若圖像灰度級為 256溉苛,則新圖的灰度值為 255 減去原圖的灰度值。本文介紹了使用 Python 的 pillow 庫進(jìn)行圖像反轉(zhuǎn)(反色)的三種方法。
安裝
pip install pillow
方法
方法 1??
使用 point() 方法對圖像所有像素值進(jìn)行運算想邦,并返回結(jié)果。
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 循環(huán)遍歷圖像的每個像素點永毅,并進(jìn)行取反操作把跨。
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 中定義的反轉(zhuǎn)函數(shù)進(jìn)行圖像顏色反轉(zhuǎn)。
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')