【问题标题】:Code ignoring my if statement? Unsure why this code isn't working代码忽略我的 if 语句?不确定为什么此代码不起作用
【发布时间】:2016-04-02 12:58:22
【问题描述】:

所以我试图反转二维码中的黑白颜色。
我的代码适用于已经严格为白色和黑色的图像: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。

谢谢!

【问题讨论】:

标签: python jython jes


【解决方案1】:

在您的代码中,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)

【讨论】:

  • 啊哈!我被难住了,但你的回答完全有道理。谢谢。
猜你喜欢
  • 2015-11-14
  • 1970-01-01
  • 1970-01-01
  • 2015-05-09
  • 1970-01-01
  • 2013-02-27
  • 1970-01-01
  • 2011-10-25
相关资源
最近更新 更多