Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
talit:image_processing_python [2024-06-03 12:44] – sca | talit:image_processing_python [2025-04-10 05:30] (aktuell) – [Aufgabe 2: Fun with Flags] hof | ||
---|---|---|---|
Zeile 24: | Zeile 24: | ||
Ein Pixel, welches Rot in voller Stärke leuchten soll, wird also durch $[255, | Ein Pixel, welches Rot in voller Stärke leuchten soll, wird also durch $[255, | ||
+ | === Transparenz === | ||
+ | Nicht alle Bildformate unterstützen Transparenz, | ||
+ | Im folgenden wird der Alpha-Kanal darum teilweise weggelassen, | ||
+ | |||
+ | === Beispiel === | ||
Betrachte das folgende Bild: | Betrachte das folgende Bild: | ||
Zeile 45: | Zeile 50: | ||
Der folgende Code liest das Bild `input_image.png` (im gleichen Ordner wie Python-File) ein und speichert es unter dem Namen `output_image.png`. Achtung: Das Bild `output_image.png` wird bei jedem Ausführen überschrieben. | Der folgende Code liest das Bild `input_image.png` (im gleichen Ordner wie Python-File) ein und speichert es unter dem Namen `output_image.png`. Achtung: Das Bild `output_image.png` wird bei jedem Ausführen überschrieben. | ||
<code python> | <code python> | ||
+ | import numpy as np | ||
from skimage import io # to read image | from skimage import io # to read image | ||
import matplotlib.pyplot as plt # to show (and save) image | import matplotlib.pyplot as plt # to show (and save) image | ||
+ | import copy | ||
+ | |||
+ | img_org = io.imread(' | ||
- | img = io.imread(' | + | # make copy of image before you manipulate it |
+ | img = copy.deepcopy(img_org) | ||
# here can manipulate img | # here can manipulate img | ||
Zeile 73: | Zeile 83: | ||
* Die zweite Zahl gibt die Anzahl Pixel in horizontale Richtung ($x$) an. | * Die zweite Zahl gibt die Anzahl Pixel in horizontale Richtung ($x$) an. | ||
* Die dritte Zahl gibt an, dass für jedes Pixel $4$ Werte (RGB und Alpha) benötigt werden. | * Die dritte Zahl gibt an, dass für jedes Pixel $4$ Werte (RGB und Alpha) benötigt werden. | ||
- | * `dtype=int` stellt sicher, dass im Array nur ganze Zahlen (integers) und keine Nachkommazahlen stehen. Ohne dies kann man die Transparent | + | * `dtype=int` stellt sicher, dass im Array nur ganze Zahlen (integers) und keine Nachkommazahlen stehen. Ohne dies kann man die Transparenz |
==== Bildbearbeitung ==== | ==== Bildbearbeitung ==== | ||
Zeile 145: | Zeile 155: | ||
1. Erstelle auf GitHub ein **neues Repo** mit passendem Namen, z.B. " | 1. Erstelle auf GitHub ein **neues Repo** mit passendem Namen, z.B. " | ||
- | | + | |
1. Füge **alle Files**, die du im Verlaufe dieses Themas erstellen/ | 1. Füge **alle Files**, die du im Verlaufe dieses Themas erstellen/ | ||
1. Commite und Pushe immer dann, wenn du Fortschritte gemacht hast. | 1. Commite und Pushe immer dann, wenn du Fortschritte gemacht hast. | ||
Zeile 163: | Zeile 173: | ||
1. Nehme das Array aus dem [[https:// | 1. Nehme das Array aus dem [[https:// | ||
1. Verändere es nun so, dass die italienische Flagge angezeigt wird (zu Ehren der Pizza und *nicht* Berlusconi): | 1. Verändere es nun so, dass die italienische Flagge angezeigt wird (zu Ehren der Pizza und *nicht* Berlusconi): | ||
- | 1. Wähle nun eine schöne (und einfache) [[https:// | + | 1. Wähle nun eine schöne (und einfache) [[wpde>Liste_der_Nationalflaggen|Flagge]] und zeichne sie selbst mithilfe eines Numpy-Arrays. |
=== Aufgabe 3: Pixel Art === | === Aufgabe 3: Pixel Art === | ||
Zeile 271: | Zeile 281: | ||
* Farbkanal isolieren (Andy Warhol) | * Farbkanal isolieren (Andy Warhol) | ||
* Invertieren | * Invertieren | ||
- | * Flippen | + | * Flippen |
* Bildausschnitt | * Bildausschnitt | ||
* Verpixeln | * Verpixeln |