代码忽略了我的if语句?不确定此代码无效的原因

时间:2016-04-02 04:28:49

标签: python jython jes

所以我试图颠倒QR码中的黑白颜色 我的代码适用于已经严格为白色和黑色的图像:RBG值为0,0,0和255,255,255 但它没有适用于另一个略微偏白和黑色的图像:21,21,21和243,243,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

我在JES 4.3中使用Jython。

谢谢!

1 个答案:

答案 0 :(得分:3)

在您的代码中,Python正在检查valueRed评估为TruevalueGreen评估为TruevalueBlue是否大于140.Python不会将if条件中的每个变量与140进行比较:您需要重写由or语句分隔的每个比较。比Python将运行每个比较并评估为TrueFalse,具体取决于颜色值是否符合比较。

您需要使用以下内容替换条件语句:

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