Konvertieren Sie das Bild mit OpenCV in YUV

Sahil Bhosale 21 Juni 2023
  1. YUV-Farbmodell auf einem Bild mit OpenCV
  2. Abschluss
Konvertieren Sie das Bild mit OpenCV in YUV

YUV ist ein Farbmodell ähnlich den RGB- und BGR-Bildformaten. In YUV definiert die Komponente (Y) die Luminanz (Helligkeit) eines Bildes und die anderen beiden Komponenten, die auch als Chrominanzkomponenten (U) und (V) bekannt sind, definieren die blaue Projektion und rote Projektion bzw.

In diesem Artikel werden wir sehen, was YUV ist und wie das YUV-Farbmodell mit OpenCV in einem Bild implementiert wird.

YUV-Farbmodell auf einem Bild mit OpenCV

YUV kodiert ein Farbbild oder Video in Bezug auf die menschliche Wahrnehmung und ermöglicht seine reduzierte Bandbreite für Chrominanzkomponenten im Vergleich zu einer “direkten” RGB-Darstellung. Es ist ein Modell, das üblicherweise als Teil einer Farbbild-Pipeline verwendet wird.

Historisch wurden die Begriffe YUV und Y’UV für eine bestimmte analoge Codierung von Farbinformationen in Fernsehsystemen verwendet.

In den Anfangsstadien verwendeten analoge Fernseher den YUV-Farbraum, um Graustufenbilder/-videos zu erzeugen. Diese analogen Fernsehgeräte werden verwendet, um die U- und V-Komponenten von YUV zu eliminieren, um Schwarzweißbilder/-videos auf dem Bildschirm zu erzeugen.

Die Werte von U und V reichen von -128 bis +127 (für ganze Zahlen mit Vorzeichen) und von 0 bis +255 (für ganze Zahlen ohne Vorzeichen).

Wir erhalten ein Graustufenbild, wenn wir die U- und V-Komponenten entfernen. U und V sind Farbmatrizen.

Lassen Sie uns nun in die Syntax eintauchen und uns einige Beispiele ansehen.

Syntax:

cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

Parameter:

  1. img - Das zu konvertierende Bild wird in der Variablen img gespeichert.
  2. cv2.COLOR_BGR2RGB - BGR-Bild wird in ein RGB-Bild umgewandelt.
  3. cv2.COLOR_RGB2YUV - RGB-Bild wird in YUV-Bild konvertiert.

Nachdem wir nun die Syntax gesehen haben, wollen wir sehen, wie sie funktioniert und in OpenCV implementiert ist.

Das Gute an der Verwendung von OpenCV ist, dass es speziell für Computer-Vision- und Bildverarbeitungsanwendungen entwickelt wurde, sodass es gut geeignet ist, um verschiedene Verarbeitungen an einem Bild durchzuführen.

Lassen Sie uns anhand eines Beispiels unten verstehen, wie YUV in OpenCV verwendet wird.

Zuerst müssen wir das OpenCV-Modul importieren, unser Bild mit der Funktion imread() laden und es in einer Variablen namens img speichern. Für dieses Beispiel haben wir ein Bild eines Autos im jpg-Format aufgenommen.

Code-Auszug:

# Import opencv library
import cv2 as cv

# Load the image into a variable using the imread function.
img = cv.imread("car.png")

# Converting the image from BGR to RGB since OpenCV generally uses BGR image format.
img_rgb = cv.cvtColor(img, cv.COLOR_BGR2RGB)

# Now converting the image from RGB to YUV
img_yuv = cv.cvtColor(img_rgb, cv.COLOR_RGB2YUV)

# Showing all the images
cv.imshow("RGB Image", img_rgb)
cv.imshow("YUV Image", img_yuv)
cv.imshow("Original Image", img)
cv.waitKey(0)
cv.destroyAllWindows()

Dann konvertieren wir das Bild mit der Methode cv.cvtcolor(), um die Farbe der Bilder auf mehrere Parameter zu ändern. Da OpenCV das BGR-Format für Bilder verwendet, müssen wir dieses Format in ein anderes Format konvertieren.

Also konvertieren wir jetzt unser Originalbild vom BGR- in das RGB-Format, indem wir cv.COLOR_BGR2RGB an den zweiten Parameter der Methode cv.cvtcolor() übergeben. Da wir unser Bild in YUV konvertieren möchten, ändern wir das Bild vom RGB-Format in YUV, indem wir den Parameter cv.COLOR_RGB2YUV an die Methode cv.cvtcolor() übergeben.

Hier können wir auch den Parameter cv.COLOR_BGR2YUV übergeben, um direkt eine Konvertierung vom BGR-Bild nach YUV durchzuführen. Wir machen einen langen Weg, um RGB und YUV besser zu verstehen.

Weitere Informationen finden Sie in den offiziellen Dokumenten.

Zuletzt verwenden wir die Funktion imshow(), um alle Bilder auf dem Bildschirm anzuzeigen.

Ausgang:

yuv opencv

Abschluss

Wie bereits erwähnt, besteht das Problem mit RGB darin, dass es für die Abbildung der visuellen Wahrnehmung schrecklich ist, aber YUV ist für diesen Zweck effizienter als RGB. Deshalb verwenden wir YUV wegen seiner lebenswichtigen Komponente, der Leuchtdichte.

Daher können wir mit den oben genannten Methoden die Bilder mit und ohne Verwendung von OpenCV in YUV und zurück konvertieren.

Sahil Bhosale avatar Sahil Bhosale avatar

Sahil is a full-stack developer who loves to build software. He likes to share his knowledge by writing technical articles and helping clients by working with them as freelance software engineer and technical writer on Upwork.

LinkedIn