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



所以我试图在二维码中反转黑色和白色
我的代码适用于已经严格为白色和黑色的图像:RBG值0,0,0和255255255。
但它无法用于另一张有点灰白色和黑色的图像:21、21、21和243243243。
在稍微偏离的图像上运行我的代码将使整个图像完全变白
我的代码取每个通道的值,如果其中任何一个超过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

我在JES 4.3中使用Jython。

谢谢!

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

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

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

相关内容

  • 没有找到相关文章

最新更新