PIL 使用 eval 函数检查像素是否打开
有没有办法使用 PIL 中的 eval 函数来遍历所有像素,同时检查每个值是什么?该程序运行图像以查看每个像素是否是特定的 RGB,如果是,则它将将该像素变成透明。 PIL 中的 eval 函数似乎可以完成这项工作,但是我的转换像素的函数可以检查其所在像素的值吗?提前致谢。
Is there any way using the eval
function in PIL to run through all pixels, while checking to see what each value is? The program runs through an image to see if each pixel is a certain rgb, and if it is, then it will turn that pixel into transparency. the eval
function in PIL seems it would do the job, but can my function that converts the pixels check the value of the pixel it's on? Thanks in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
更新:啊,我明白你想做什么。这是仅使用 PIL 的示例。它将所有白色像素转换为 50% Alpha 的红色:
原始答案:是的,
Image.eval()
函数允许您传入一个评估每个像素的函数,并让您确定一个新的像素值:Updated: Ahh, I see what you want to do. Here is an example using only PIL. It converts all white pixels to red with 50% alpha:
Orig answer: Yes, the
Image.eval()
function lets you pass in a function which evaluates each pixel, and lets you determine a new pixel value:不,
eval
不会将 RGB 元组传递给函数。它在每个频带上映射一个函数。不过,您可以使用eval
处理每个波段,然后使用ImageChops
操作逻辑组合这些波段并获取特定于像素元组的掩码。顺便说一句,如果你愿意的话,这可以在 NumPy 中更干净、更高效地完成。
No,
eval
will not pass an RGB tuple to a function. It maps a function over each band. You could, however process each band usingeval
and then use anImageChops
operation to logically combine the bands and get a mask that will be pixel-tuple specific.By the way, this could be done much more cleanly and efficiently in NumPy if you are so inclined..