Wie konvertiert man dieses Programm in eine Farbänderung? Verarbeitung: Pixel ändert Farben durch den Mauszeiger bewegt sich über
Antwort
Um Kevins ausgezeichnete Antwort hinzuzufügen: brechen Sie es zuerst ab.
"Farben ändern" = set() oder pixels[]. (obwohl Satz langsamer sein kann, kann es mehr intuitiv sein, mit zu beginnen und den Dreh bekommen)
„schwarz/weiß (Graustufe)“ - ein color()
mit dem gleichen r, g, b-Wert ist im Wesentlichen Graustufen- . Sie können get() die Helligkeit eines Pixels mit der passenden brightness() Funktion verwenden.get()
wird der Cursor für eine gegebene x abrufen, y-Koordinaten-Paar (wie mouseX,mouseY
zum Beispiel)
Das wäre super einfach zu implementieren:
- Last das Bild
- die Pixelfarbe an den Cursor-Koordinaten erhalten
- die Helligkeit des Pixels erhalten
- einen Grauwert von der Helligkeit an den gleichen Koordinaten basierend eingestellt
Hier ein kurzer Auszug:
PImage image;
void setup(){
size(200,200);
image = loadImage("https://processing.org/tutorials/pixels/imgs/tint1.jpg");
}
void draw(){
//modify output - cheap grayscale by using the pixel brightness
image.set(mouseX,mouseY,color(//make a gray scale colour...
brightness(//from the brightness...
image.get(mouseX,mouseY)//of the pixel under cursor
)
));
//draw the result;
image(image,0,0);
}
Es wäre viel Bewegung nehmen das gesamte Bild in Graustufen zu machen.
Eine andere Option wäre eine Kopie des Bildes, die filtered Graustufen, die Sie an eine mask() anwenden können. Wenn Sie die Maus bewegen, zeigt diese Maske mehr und mehr das Graustufenbild. Eine einfache Möglichkeit, diese Maske dynamisch zu gestalten, ist die Verwendung von PGraphics, wie Kevin bereits erwähnt hat. Es funktioniert im Wesentlichen als separate Ebene, in die Sie mit den typischen Verarbeitungsfunktionen zeichnen können. Der einzige Haken ist, dass Sie diese Zeichenfunktionsaufrufe innerhalb von beginDraw()
/endDraw()
aufrufen müssen.
Hier ist eine kommentierte Demo:
PImage input;//original image
PImage output;//grayscale image
PGraphics mask;
void setup(){
size(200,200);
input = loadImage("https://processing.org/tutorials/pixels/imgs/tint1.jpg");
//copy input pixels into output
output = input.get();
//make it grayascale
output.filter(GRAY);
//setup mask
mask = createGraphics(width,height);
mask.beginDraw();
mask.background(0);//nothing black passes through the mask
mask.noStroke();
mask.fill(255);//everything white passes through the mask
mask.endDraw();
}
void draw(){
//draw color image
image(input,0,0);
//apply mask
output.mask(mask);
//draw masked output
image(output,0,0);
}
//draw into the mask
void mouseDragged(){
mask.beginDraw();
mask.ellipse(mouseX,mouseY,20,20);
mask.endDraw();
}
Die kühle Sache ist, können Sie andere geformte Masken und weiche Masken verwenden gradients
Wow, vielen Dank alle – Sara
@Sara Fühlen Sie sich frei zu wählen und Antworten ankreuzen, wenn sie hilfreich waren :) –
Es ist schwierig allgemeine Fragen wie "Wie mache ich das?" Zu beantworten, da es so viele verschiedene Möglichkeiten gibt, so etwas zu tun. Stack Overflow ist mehr für "Ich habe X versucht, erwartet Y, aber habe Z stattdessen" Typ Fragen. Davon abgesehen werde ich versuchen, in einem allgemeinen Sinn zu helfen.
Sie müssen Ihr Problem in kleinere Schritte zerlegen. Sie sollten sich immer nur auf einen kleinen Schritt konzentrieren, anstatt zu versuchen, Ihr großes Endziel auf einmal anzunehmen.
Schritt 1: Können Sie ein Bild in Schwarzweiß laden und anzeigen? Mach dir noch keine Sorgen um etwas anderes. Erstellen Sie einfach eine einfache Skizze, die ein Farbbild lädt und es in Schwarzweiß anzeigt. Eine Möglichkeit, dies zu erreichen, ist die Verwendung der filter()
-Funktion.
Schritt 2: Können Sie einen Teilabschnitt des Schwarz-Weiß-Bildes aufnehmen und die Originalfarben in diesem Unterabschnitt anzeigen? Mach dir noch keine Gedanken über die Mausposition. Verwenden Sie einfach eine fest codierte Position und beginnen Sie vielleicht mit einem Rechteck, um es einfacher zu machen. Sie könnten für diesen Schritt die PGraphics
-Klasse oder die set()
-Funktion verwenden.
Schritt 3: Nachdem Sie den hartcodierten Schritt funktioniert haben, können Sie Ihre Logik hinzufügen, um die Mausposition zu erhalten.
Sie müssen einen Schritt zurücktreten und wirklich verstehen, was das Beispiel, das Sie gepostet haben, tut. Sie können Code nicht einfach weghacken und erwarten, dass er funktioniert. Zerlegen Sie das Problem in kleinere Teile und nehmen Sie dann diese Teile einzeln auf. Wenn Sie in einem dieser spezifischen Schritte hängen bleiben, können Sie eine bestimmte Frage stellen und eine MCVE posten, und es wird Ihnen viel einfacher sein, Ihnen zu helfen. Viel Glück!
Ok, hab es! ..ich denke;) Danke. – Sara
- 1. Dropdown-Liste verschwindet, wenn die Maus über den Mauszeiger bewegt
- 2. UISearchBar bewegt sich um 20 Pixel
- 3. d3.js Zoomen funktioniert nur, wenn der Mauszeiger über Pixel des Diagramms bewegt wird
- 4. In Selen bewegt sich das Bewegen zu einem (x, y) im Browserbildschirm nicht den Mauszeiger. Warum?
- 5. Übergeben von Farben durch einen Pixel-Shader in HLSL
- 6. Holen Sie den Alphachannel Wert aus Pixel unter Mauszeiger
- 7. Warum ändert sich mein Mauszeiger in Eclipse zu einem Pluszeichen?
- 8. WPF - TabItem Hintergrundfarbe ändert sich, wenn Tabitem ausgewählt ist oder Mauszeiger über
- 9. CSS Farbe der Spanne ändern, wenn man den Mauszeiger über die Schaltfläche bewegt
- 10. OpenCV - cvtColor ändert den Farbraum nicht, er ändert die Farben
- 11. IntelliJ Cursive s-form Dokumentation über den Mauszeiger über
- 12. Unterschiedliche Farben bei der Verarbeitung
- 13. Android Mauszeiger Ereignis/dev/uinput bewegt sich nicht auf Y-Achse
- 14. Reagieren Sie den Mauszeiger über die Taste, damit sich eine andere Taste über der Tastatur befindet
- 15. Menü bewegt sich beim Schweben nach links
- 16. Sortierungssymbol ändert sich nicht in Datatable serverseitige Verarbeitung
- 17. Abstand, der sich durch Zeilenumbrüche ändert
- 18. Der Inhalt auf der Seite bewegt sich weiter, wenn der Mauszeiger auf ein div gestellt wird
- 19. Wie macht man den Mauszeiger über den Kartenbereich?
- 20. Verhindern Sie den Mauszeiger über den aktiven Zustand
- 21. Bild bewegt sich nicht?
- 22. Versteckte Navigationsleiste bewegt sich Ansicht "nach oben"
- 23. Get Pixel und Farben von NSMage
- 24. NSTableView und Mauszeiger über eine Spalte
- 25. Iterieren über Farben
- 26. Bild bewegt sich auf einer Website beim Scrollen über
- 27. Cursor bewegt sich an den Anfang eines Textfelds
- 28. Variablenwert durch Mauszeiger in Spyder anzeigen
- 29. Warum bewegt sich mein Mauszeiger nicht dorthin, wo ich sage, dass er mit Cursor.Position gehen soll?
- 30. Javascript/Onclick - Machen Sie den Mauszeiger eine Hand beim Mauszeiger über
Welche Sprache ist, dass? Bitte bearbeiten Sie Ihre Frage und fügen Sie das entsprechende Tag hinzu. Vielen Dank! –
Gibt es ein anderes Feld, in dem ich dieses Programm als Verarbeitungsskizze bezeichnen sollte? Wenn ich nicht genau bin, zeige mir bitte den Weg :) – Sara
Ich sehe du hast es schon gefunden! :-) Aber mir ist aufgefallen, dass da noch etwas zu regeln war, ich habe noch einen Schnitt zu deiner Frage eingereicht, so dass nun das Bild automatisch angezeigt wird. –