2016-04-02 17 views
0

So versuche ich, die schwarzen und weißen Farben in einem QR-Code umzukehren.
Mein Code funktioniert für Bilder, die bereits streng weiß und schwarz sind: RBG-Werte 0,0,0 und 255,255,255.
Aber es funktioniert nicht für ein anderes Bild, das leicht weiß und schwarz ist: 21,21,21 und 243,243,243.
Wenn ich meinen Code auf das etwas unfertige Bild lese, wird das ganze Ding streng weiß.
Mein Code nimmt den Wert jedes Kanals und wenn einer von ihnen 140 überschreitet, wird er weiß angezeigt. Warum ist ein bisschen schwarz, 21,21,21 weiß?Code ignoriert meine if-Anweisung? Nicht sicher, warum dieser Code nicht funktioniert

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 

Ich verwende Jython in JES 4.3.

Danke!

+2

Sie werden jede Variable vergleichen wollen wieder '140' -' if (valueRed> 140 oder valueBlue> 140 oder ...) '. Related: [Wie prüfe ich eine Variable gegen mehrere Werte?] (Http://stackoverflow.com/questions/15112125/how-do-i-test-one-variable-against-multiple-values) –

Antwort

3

In Ihrem Code, war die Überprüfung Python wenn valueRed-True auswertet oder wenn valueGreen-True oder wenn valueBlue wertet größer als 140 Python nicht vergleichen jede Variable in dem if bedingten bis 140: Sie müssen jeden Vergleich getrennt neu zu schreiben von or Anweisungen stattdessen. Dann führt Python jeden Vergleich aus und bewertet entweder True oder False, abhängig davon, ob der Farbwert den Vergleich erfüllt oder nicht.

Sie wollen Ihre bedingte Anweisungen mit der folgenden ersetzen:

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

Aha! Ich war ratlos, aber deine Antwort macht durchaus Sinn. Vielen Dank. – jeffbobmate