2016-04-02 50 views
0

所以我試圖在QR代碼中反轉黑白顏色。
我的代碼適用於已嚴格白色和黑色的圖像:RBG值0,0,0和255,255,255。
但它沒有爲另一張略帶白色和黑色的圖像工作:21,21,21和243,243,243。
在稍微偏離的圖像上運行我的代碼會使整個事物嚴格爲白色。
我的代碼取每個通道的值,如果其中任何一個超過140,它將變成白色。爲什麼稍微偏黑,21,21,21變白?代碼忽略我的if語句?不確定爲什麼此代碼不起作用

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。

謝謝!

+2

你會想每個變量又比較'140' - '如果(valueRed> 140或valueBlue> 140或... )'。相關:[我如何測試一個變量對多個值?](http://stackoverflow.com/questions/15112125/how-do-i-test-one-variable-against-multiple-values) –

回答

3

在代碼中,由於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) 
+0

啊哈!我被困住了,但你的回答很有道理。謝謝。 – jeffbobmate