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)