使用python编辑jpg中的rgb值

时间:2012-05-30 22:33:06

标签: python image image-processing python-imaging-library rgb

我正在尝试使用Python Imaging Library更改照片中的RGB值。我一直在使用函数Image.point,它做我想要的,除了我希望能够在R G和B值上实现不同的功能。有谁知道我怎么能这样做?

谢谢!

1 个答案:

答案 0 :(得分:6)

除了PIL之外,最好还使用numpy来对图像的各个波段进行数学运算。

作为 not 的一个人为设想的例子意味着以任何方式表现良好:

import Image
import numpy as np

im = Image.open('snapshot.jpg')

# In this case, it's a 3-band (red, green, blue) image
# so we'll unpack the bands into 3 separate 2D arrays.
r, g, b = np.array(im).T

# Let's make an alpha (transparency) band based on where blue is < 100
a = np.zeros_like(b)
a[b < 100] = 255

# Random math... This isn't meant to look good...
# Keep in mind that these are unsigned 8-bit integers, and will overflow.
# You may want to convert to floats for some calculations.
r = (b + g) * 5

# Put things back together and save the result...
im = Image.fromarray(np.dstack([item.T for item in (r,g,b,a)]))

im.save('output.png')

输入 enter image description here


输出 enter image description here