代码忽略我的if语句?不确定为什么这个代码不起作用

2024-09-30 04:39:05 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,我尝试在二维码中反转黑白颜色。
我的代码适用于已经完全是白色和黑色的图像:RBG值0,0,0和255255。
但对于另一幅略带黑白的图像:21、21、21和243,它是行不通的。
在稍微关闭的图像上运行我的代码将使整个图像完全变白。
我的代码获取每个通道的值,如果其中任何一个超过140,它将变为白色。为什么一个稍微偏黑的21,21,21变成了白色?你知道吗

def invert(smallPicture):

for pixel in getPixels(smallPicture):
  valueRed = getRed(pixel)
  valueGreen = getGreen(pixel)
  valueBlue = getBlue(pixel)

  if (valueRed or valueBlue or valueGreen > 140):
     setColor(pixel, white)
  else:
     setColor(pixel, black)

return smallPicture

我在jes4.3中使用Jython。你知道吗

谢谢!你知道吗


Tags: or代码图像颜色def二维码黑色pixel
1条回答
网友
1楼 · 发布于 2024-09-30 04:39:05

在您的代码中,Python正在检查valueRed的值是否为True,或者valueGreen的值是否为True,或者valueBlue是否大于140。Python不会将if条件中的每个变量与140进行比较:您需要重写每个由or语句分隔的比较。Python将运行每个比较并计算为TrueFalse,具体取决于颜色值是否满足比较。你知道吗

您需要将条件语句替换为以下语句:

if (valueRed > 140 or valueBlue > 140 or valueGreen > 140):
    setCoor(pixel, white)
else:
    setColor(pixel, black)

相关问题 更多 >

    热门问题