【问题标题】:Python/Pillow: Filter pixels with max/min RGB valuesPython/Pillow:使用最大/最小 RGB 值过滤像素
【发布时间】:2015-08-02 02:22:37
【问题描述】:

我有一张图像,其中每个像素都是最大和最小 RGB 值的随机组合(即 [255, 0, 255], [0, 0, 255], [255,255,255])。

但是,图像确实包含一些文本,这些文本在噪声中隐藏为非常轻微、难以察觉的变色。我正在尝试编写一些简单的 Python 来美化包含最大或最小 RGB 值的所有像素,以便隐藏的消息清晰可见。

程序应该非常简单,如下所示:

open image
get width and height
for x in width
   for y in height
       if any channel value of pixel (x,y) is either 0 or 255
          set color of (x,y) to [255, 255, 255]

我坚持的主要部分是改变颜色的条件;我可以先分别检查每个像素的红色值,然后是绿色,然后是蓝色,但是由于我试图使代码尽可能紧凑,我想知道如何同时测试数组中的所有三个元素,而不是使用单独的 if 语句。 任何提示将不胜感激。谢谢!

【问题讨论】:

标签: python image colors python-imaging-library pillow


【解决方案1】:

由于 RGB 值以单个数组的形式给出,您可以使用关键字in

# channels = [255, 0, 0]
if 0 in channels or 255 in channels:
    channels = [255, 255, 255]

你甚至可以combine multiple in checks,但这对于仅 2 次检查来说太过分了。

【讨论】:

  • 这正是我所需要的。非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-13
  • 1970-01-01
  • 2017-08-27
  • 2014-02-02
  • 1970-01-01
  • 2018-10-09
  • 1970-01-01
相关资源
最近更新 更多