我好像不明白图像点的作用。我想做一些像素编辑,可能包括检查每个像素中哪个颜色值(r、g或b)是最大值,并相应地进行操作。假设我不能用纽比。我设法使用图像点为图像中的每个像素添加相同的值。 点代码
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()
纽比码
^{pr2}$我不得不说点代码比numpy的快,但是如果我想用point做一个更复杂的操作呢。例如,对于每个像素,检查max(r,g,b),并根据r=max或g=max或b=max做一些事情。只需要一个论点,这是什么?是像素吗?(即i=(r,g,b)?)。我似乎无法从pil文档中理解
在PIL的早期版本中,文档可能并不清楚,但在Pillow中,它的拼写非常清楚。来自^{} :
^{bq}$换句话说,它不是一个通用的方法来映射每个像素通过一个函数,它只是一种动态构建查找表的方法,而不是传递一个预先构建的查找表。在
换句话说,它是用从
0
到255
的数字来调用的。(只需编写一个函数,将其参数附加到一个全局列表中,然后在结尾处转储该列表,您就可以很容易地找到它。)如果你把你的图像分割成不同的波段或平面,} 是你想要的,而不是{}。在
point
每一个都有不同的功能,然后重新组合它们,这样就可以完成你想做的事情了。但即便如此,我认为^{但我认为你真正想要的是一个逐像素的所有波段同时迭代器。你不需要什么特别的东西。只需使用} 的理解。不是很慢吗?当然它很慢,因为它调用你的函数X*Y次;构建
map
或对^{getdata
序列并对其进行迭代的成本与此成本相比微不足道,因此为PIL寻找一种方法来优化已经足够快的部分不会让你走得太远。在相关问题 更多 >
编程相关推荐