我有一个图像,其中每个像素是最大和最小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语句分开。 任何提示将不胜感激。谢谢!
答案 0 :(得分:0)
由于RGB值是单个数组,因此您可以使用关键字in
:
# channels = [255, 0, 0]
if 0 in channels or 255 in channels:
channels = [255, 255, 255]
你甚至可以combine multiple in
checks,但这对于2次检查来说太多了。