我似乎无法理解 Image point 的作用。我想做一些像素编辑,其中可能包括检查每个像素中哪个颜色值(r、g 或 b)最大并采取相应措施。可以说我不能使用numpy。我设法使用 Image point 为图像中的每个像素添加相同的值。点代码
import Image, math
def brightness(i, value):
value = math.floor(255*(float(value)/100))
return i+value
if __name__ == '__main__':
image = '/home/avlahop/verybig.jpg'
print image
img = Image.open(image)
print img
out = img.point(lambda i: brightness(i, 50))
out.show()
代码
def brightness(arr, adjust):
import math
adjust = math.floor(255*(float(adjust)/100))
arr[...,0] += adjust
arr[...,1] += adjust
arr[...,2] += adjust
return arr
if __name__ == '__main__':
image = '/home/avlahop/verybig.jpg'
img = Image.open(image).convert('RGBA')
arr = np.array(np.asarray(img).astype('float'))
new_image = Image.fromarray(brightness(arr, adjust).clip(0,255).astype('uint8'), 'RGBA').show()
我不得不说点代码比numpy的快。但是如果我想用点做一个更复杂的操作怎么办。例如,对于每个像素检查 max(r,g,b) 并根据 r=max 或 g=max 或 b=max 执行某些操作。如您所见,我使用函数作为参数的点。它需要一个参数 i。这是什么我?是像素吗?(即 i=(r,g,b)?)。我似乎无法从 pil 文档中理解