1. Konvertieren zwischen Farbräumen (RGB, HSV, LAB)
OpenCV bietet Funktionen zum Konvertieren von Bildern zwischen verschiedenen Farbräumen. Die häufig verwendeten Farbräume sind RGB, HSV und LAB.
RGB (Rot, Grün, Blau): Der RGB-Farbraum ist der Standardfarbraum, in dem Bilder dargestellt werden. Er verwendet drei Kanäle, um Farben zu beschreiben: Rot, Grün und Blau.
HSV (Farbton, Sättigung, Helligkeit): Der HSV-Farbraum ist nützlich für Bildverarbeitungsaufgaben, bei denen es auf die Farbtrennung ankommt. Er verwendet drei Komponenten: Farbton (Hue), Sättigung (Saturation) und Helligkeit (Value).
LAB (Luminanz, a, b): Der LAB-Farbraum ist ein geräteunabhängiger Farbraum, der Farben so darstellt, wie sie vom menschlichen Auge wahrgenommen werden. Er besteht aus einer Luminanzkomponente (L) und zwei Farbkomponenten (a und b).
Beispiel: Konvertieren zwischen RGB und HSV
import cv2
# Ein Bild laden
bild = cv2.imread('ajjoub.jpg')
# Bild von RGB zu HSV konvertieren
bild_hsv = cv2.cvtColor(bild, cv2.COLOR_BGR2HSV)
# Fenster erstellen und die Größe festlegen
cv2.namedWindow('RGB Bild', cv2.WINDOW_NORMAL)
cv2.resizeWindow('RGB Bild', 600, 400)
cv2.namedWindow('HSV Bild', cv2.WINDOW_NORMAL)
cv2.resizeWindow('HSV Bild', 600, 400)
# Bild anzeigen
cv2.imshow('RGB Bild', bild)
cv2.imshow('HSV Bild', bild_hsv)
cv2.waitKey(0)
cv2.destroyAllWindows()
Bild vorher:

Bild Nachher:

Beispiel: Konvertieren zwischen RGB und LAB
import cv2
# Ein Bild laden
bild = cv2.imread('ajjoub.jpg')
# Bild von RGB zu LAB konvertieren
bild_lab = cv2.cvtColor(bild, cv2.COLOR_BGR2LAB)
# Fenster erstellen und die Größe festlegen
cv2.namedWindow('RGB Bild', cv2.WINDOW_NORMAL)
cv2.resizeWindow('RGB Bild', 600, 400)
cv2.namedWindow('LAB Bild', cv2.WINDOW_NORMAL)
cv2.resizeWindow('LAB Bild', 600, 400)
# Bild anzeigen
cv2.imshow('RGB Bild', bild)
cv2.imshow('LAB Bild', bild_lab)
cv2.waitKey(0)
cv2.destroyAllWindows()
Ausgabe LAB Bild:

2. Aufteilen und Zusammenführen von Bildkanälen
In OpenCV können wir die einzelnen Farbkanäle eines Bildes extrahieren und modifizieren. Dies kann nützlich sein, wenn wir bestimmte Farbinformationen verarbeiten oder analysieren möchten.
Aufteilen von Bildkanälen:
Mit der Funktion cv2.split()
können wir ein Bild in seine einzelnen Kanäle aufteilen.
Beispiel: Aufteilen eines RGB-Bildes in seine Kanäle
import cv2
# Ein Bild laden
bild = cv2.imread('ajjoub.jpg')
# Bild in B, G, R Kanäle aufteilen
b, g, r = cv2.split(bild)
# Fenster erstellen und die Größe festlegen
cv2.namedWindow('Blauer Kanal', cv2.WINDOW_NORMAL)
cv2.resizeWindow('Blauer Kanal', 600, 400)
cv2.namedWindow('Grüner Kanal', cv2.WINDOW_NORMAL)
cv2.resizeWindow('Grüner Kanal', 600, 400)
cv2.namedWindow('Roter Kanal', cv2.WINDOW_NORMAL)
cv2.resizeWindow('Roter Kanal', 600, 400)
# Einzelne Kanäle anzeigen
cv2.imshow('Blauer Kanal', b)
cv2.imshow('Grüner Kanal', g)
cv2.imshow('Roter Kanal', r)
cv2.waitKey(0)
cv2.destroyAllWindows()
Ausgabe:

Zusammenführen von Bildkanälen:
Mit der Funktion cv2.merge()
können wir die einzelnen Kanäle wieder zu einem Bild zusammenführen.
Beispiel: Zusammenführen von Kanälen zu einem RGB-Bild
import cv2
# Ein Bild laden
bild = cv2.imread('ajjoub.jpg')
# Bild in B, G, R Kanäle aufteilen
b, g, r = cv2.split(bild)
# Einige Änderungen an den Kanälen vornehmen (zum Beispiel den roten Kanal auf 0 setzen)
r[:] = 0
# Kanäle wieder zusammenführen
bild_verändert = cv2.merge([b, g, r])
# Fenster erstellen und die Größe festlegen
cv2.namedWindow('Originales Bild', cv2.WINDOW_NORMAL)
cv2.resizeWindow('Originales Bild', 600, 400)
cv2.namedWindow('Verändertes Bild', cv2.WINDOW_NORMAL)
cv2.resizeWindow('Verändertes Bild', 600, 400)
# Originales und verändertes Bild anzeigen
cv2.imshow('Originales Bild', bild)
cv2.imshow('Verändertes Bild', bild_verändert)
cv2.waitKey(0)
cv2.destroyAllWindows()
Ausgabe:

Durch das Verständnis und die Anwendung dieser Techniken können Sie komplexe Bildverarbeitungsaufgaben durchführen, bei denen Farbinformationen eine entscheidende Rolle spielen.