2016-04-02 32 views
0

Siyah ve beyaz renkleri bir QR Kodunda tersine çevirmeye çalışıyorum.
Benim kodum zaten sıkı beyaz ve siyah olan görüntüler için çalışıyor: RBG değerleri 0,0,0 ve 255,255,255.
Ama beyaz ve siyah biraz kapalı olan başka bir görüntü için çalışmak için başarısız oluyor: 21,21,21 ve 243,243,243.
Kodumu biraz kapalı görüntü üzerinde çalıştırmak, tüm şeyi kesinlikle beyaza dönüştürecektir.
Kodum, her kanalın değerini alır ve bunlardan herhangi biri 140'ı aşarsa, beyaza döner. Neden biraz açık siyah, 21,21,21 beyaza dönüyor?Kod, if ifadem yoksayılıyor mu? Bu kodun neden çalışmadığından emin değilsiniz

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 

Jython'u JES 4.3'te kullanıyorum.

Teşekkürler! valueRedTrue olarak değerlendirilen veya valueGreenTrue olarak değerlendirilen veya valueBlue eğer daha büyük 140. ise Python içinde her değişkeni karşılaştırmak etmezse Kodunuzda

+2

Sen 140' 'yine her değişkeni karşılaştırmak istersiniz -' (valueRed> 140 veya valueBlue> 140 ya da ...) '. İlgili: [Bir değişkeni birden çok değere karşı nasıl test ederim?] (Http://stackoverflow.com/questions/15112125/how-do-i-test-one-variable-against-multiple-values) –

cevap

3

, Python kontrol ediyordu if şartlı 140: Sen ayrılmış her karşılaştırmayı yeniden yazmak gerekir or ifadeleri yerine. Python, her karşılaştırmayı çalıştırır ve renk değerinin karşılaştırmayı karşılayıp karşılamadığını bağlı olarak True veya False'a göre değerlendirir.

aşağıdaki ile koşullu ifadeler değiştirmek isteyeceksiniz:

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

Aha! Stumped oldum ama cevabınız tam anlamıyla geliyor. Teşekkürler. – jeffbobmate