2016-11-26 2 views
0

Bitte ich möchte nur die Pixel ändern, die überwiegend rot sind, anstatt die rote Komponente aller Pixel zu entfernen. (Ich benutze Python 3.5) Was könnte mit meinem Code falsch sein.nur die Pixel ändern, die überwiegend rot sind, anstatt die rote Komponente aller Pixel zu entfernen

from cImage import * 
def removeRed(imageFile): 
    myimagewindow = ImageWin("Image Processing",1000,500) 
    oldimage = FileImage(imageFile) 
    oldimage.draw(myimagewindow) 

    width = oldimage.getWidth() 
    height = oldimage.getHeight() 
    newim = EmptyImage(width,height)  

    for col in range(width): 
     for row in range(height): 
      old_pixel = oldimage.getPixel(col,row) 
      new_pixel = Pixel(0, old_pixel.getGreen(), old_pixel.getBlue()) 
      newim.setPixel(col, row, new_pixel) 
    newim.setPosition(width+1,0) 
    newim.draw(myimagewindow) 
    myimagewindow.exitOnClick() 
removeRed("red.gif") 
+0

Was ist das Problem? –

+0

Ich möchte nur Pixel ändern, die überwiegend rot sind, anstatt die rote Komponente aller Pixel zu entfernen. –

+0

Womit möchten Sie Ihre roten Pixel ersetzen? –

Antwort

0

wenn Sie definieren „vorherrschend“ von „höchsten Wert von R, G, B R“ dann vergleicht nur Werte und auf 0 gesetzt, nur wenn Rot als die beiden grünen höher ist und blau:

for col in range(width): 
    for row in range(height): 
     old_pixel = oldimage.getPixel(col,row) 
     if old_pixel.getRed() > old_pixel.getGreen() and old_pixel.getRed() > old_pixel.getBlue(): 
      new_pixel = Pixel(0, old_pixel.getGreen(), old_pixel.getBlue()) 
      newim.setPixel(col, row, new_pixel) 
     else: 
      newim.setPixel(col, row, old_pixel) 
+0

Zum Beispiel habe ich ein Bild von einer rosa Blume mit einem weißen Hintergrund. Dies ist der Fall, ich möchte die rote Farbe von der Rosenblume entfernen, ohne irgendeine andere Änderung an irgendeiner Farbe vorzunehmen, die auf dem Bild vorhanden ist. Kurz gesagt, ich möchte, dass die rote Farbe weg ist. –

+0

Vorherrschend, in dem Sinne, dass ein Teil des Bildes in Rot ist, also möchte ich diesen Teil alleine entfernen, aber weil der Hintergrund des Bildes weiß ist und ein bisschen rote Farbe in weiß ist, ändert sich der Hintergrund zu cyan.In Kürze möchte ich die rote Farbe von diesem bestimmten Pixel entfernen, als es aus dem ganzen Pixel zu entfernen –

+0

Haben Sie meine Antwort getestet? –

Verwandte Themen