Zum Inhalt

Bildverarbeitung

3. Bildverarbeitung und -optimierung

In diesem Abschnitt erfahren Sie, wie Sie Bilder ändern, Dateierweiterungen ändern, die Größe von Grafiken ändern und Pixel mithilfe von Code analysieren.

Tools und Bibliotheken

  • Pillow (PIL Fork): Die Standard-Python-Bibliothek zum Öffnen, Bearbeiten, Ändern der Größe und Speichern von Grafikbildern. Es ist „benutzerfreundlich“ und für allgemeine Aufgaben einfach zu verwenden.
  • OpenCV (opencv-python): Eine leistungsstarke Computer-Vision-Bibliothek, die für erweiterte Matrixberechnung, Objekterkennung und Echtzeit-Videoverarbeitung verwendet wird.

Kernmethoden und Codebeispiel

1. Formatkonvertierung (Pillow)

Image.open('input.jpg') & Image.save('output.png')

So funktioniert es: Öffnet eine Bilddatei im Speicher und schreibt sie zurück auf die Festplatte, wobei Formatkonvertierungen automatisch durchgeführt werden.

2. Proportionale Größenänderung (Kissen)

Image.thumbnail((max_w, max_h))

So funktioniert es: Ändert die Größe eines Bildes so, dass es innerhalb bestimmter Breiten-/Höhengrenzen passt, während das Seitenverhältnis beibehalten wird (damit es nicht „gestreckt“ aussieht).

3. Matrixbasierte Verarbeitung (OpenCV)

„cv2.imread()“ und „cv2.imwrite()“.

So funktioniert es: Öffnet Bilder als NumPy-Matrizen (Zahlengitter). Dies ermöglicht eine tiefgreifende mathematische Manipulation von Pixeln, beispielsweise eine Farbraumverschiebung.

from PIL import Image
import cv2

# --- Pillow Example: Quick Resizing & Conversion ---
# Opens 'profile.jpg', shrinks it to fit 400x400, and converts to PNG
with Image.open('profile.jpg') as img:
    img.thumbnail((400, 400)) 
    img.save('profile_optimized.png', 'PNG')

# --- OpenCV Example: Advanced Pixel Manipulation ---
# Load the image as a mathematical matrix (BGR format by default)
matrix_image = cv2.imread('profile_optimized.png')

# Apply a color transformation: Convert BGR color grid to Grayscale
grayscale_image = cv2.cvtColor(matrix_image, cv2.COLOR_BGR2GRAY)

# Save the final result
cv2.imwrite('profile_gray.png', grayscale_image)