lehrkraefte:blc:informatik:glf25:labyrinthe:bilder-einlesen

Pixel-Bilder einlesen

Wir verwenden die Pillow Library, um Bilder einzulesen und die Pixelwerte zu bestimmen.

Laden Sie folgende Bild-Datei in der Labyrinth-Ordner:

Laden Sie folgendes Python-Programm in den Labyrinth-Ordner herunter:

bildeinlesen.py
# pip install Pillow
from PIL import Image
 
image = Image.open("67.png")
 
for y in range(image.height):
    for x in range(image.width):
        p = image.getpixel((x,y))
        if sum(p)>=3*128:
            print("##", end='')
        else:
            print("  ", end='')
    print()

Falls das Programm in der Zeile 2 from PIL import Image abbricht, muss einmalig die Library noch auf der Kommandozeile installiert werden:

pip install Pillow
  • Studieren Sie obiges Programm
  • Verändern Sie das Programm so, dass das Bild invertiert erscheint.
  • image.getpixel((x,y)) liefert eine Liste mit 3 Einträgen: Farbintensitäten rot, grün, blau von 0 bis und mit 255. Erklären Sie damit den Sinn der Bedingung in der Zeile mit dem if.
  • Erstellen Sie selbst ein Schwarz-Weiss-Bild mit einer Auflösung von 24×24 Pixeln mit einem Motiv, das aus einer einzigen, zusammenhängenden schwarzen Fläche besteht, die zwei gegenüberliegende Ränder berührt. Die Fläche muss überall mindestens 2 Pixel breit sein (oder besser 3). Die Fläche darf aber weisse Löcher haben.

Schreiben Sie ein Python-Programm das folgendes tut:

  • Bild einlesen
  • Neues, Labyrinth mit gleicher Grösse wie das Bild erzeugen (erst mal alle Mauern geschlossen).
    • Die Grösse soll direkt aus der Grösse vom Bild bestimmt werden, d.h. das Programm soll unverändert für unterschiedlich grosse Bilder funktionieren.
  • Das Bild ins Labyrinth übertragen, d.h. alle Zellen, die schwarzen Pixeln entsprechen, sollen mit '#' markiert werden.
  • Geben Sie dieses Labyrinth aus.
  • In einem Labyrinth, wo wie oben einige Zellen mit # markiert wurden, ergänzen Sie das Programm so, dass
    • auf gegenüberliegenden Rändern vom Labyrinth möglichst weit voneinander entfernte Zellen gesucht werden, die mit # markiert sind (d.h. Teil der schwarzen Fläche).
  • Das sind dann die Startpunkte für das Labyrinth. Markieren Sie diese mit 'S' und 'Z'
  • Testen Sie Ihr Programm mit unterschiedlichen Bildern.
  • Ergänzen Sie das Programm so, dass ein Labyrinth mit Startzelle 'S' generiert wird, mit der Zusatzbedingung, dass nur Zellen betreten werden, die mit # markiert sind.
  • Bestimmen Sie die Abfolge der Zellen, die dem Weg vom Start 'S' zum Ziel 'Z' entspricht.
    • Wie könnte dazu die Todo-Liste verwendet werden?
  • lehrkraefte/blc/informatik/glf25/labyrinthe/bilder-einlesen.txt
  • Last modified: 2026/03/19 18:14
  • by Ivo Blöchliger