代码忽略了我的 if 语句?不确定为什么此代码不起作用
Code ignoring my if statement? Unsure why this code isn't working
所以我想在二维码中反转黑白颜色。
我的代码适用于已经严格为白色和黑色的图像: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 正在检查 valueRed
是否计算为 True
或者 valueGreen
是否计算为 True
或者 valueBlue
大于 140。Python 不会将 if
条件中的每个变量与 140 进行比较:您需要重写每个由 or
语句分隔的比较。 Python 将 运行 每次比较并评估为 True
或 False
,具体取决于颜色值是否满足比较。
您需要用以下内容替换您的条件语句:
if (valueRed > 140 or valueBlue > 140 or valueGreen > 140):
setCoor(pixel, white)
else:
setColor(pixel, black)
所以我想在二维码中反转黑白颜色。
我的代码适用于已经严格为白色和黑色的图像: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 正在检查 valueRed
是否计算为 True
或者 valueGreen
是否计算为 True
或者 valueBlue
大于 140。Python 不会将 if
条件中的每个变量与 140 进行比较:您需要重写每个由 or
语句分隔的比较。 Python 将 运行 每次比较并评估为 True
或 False
,具体取决于颜色值是否满足比较。
您需要用以下内容替换您的条件语句:
if (valueRed > 140 or valueBlue > 140 or valueGreen > 140):
setCoor(pixel, white)
else:
setColor(pixel, black)