Der HSV-Farbraum mit OpenCV in Python

Manav Narula 18 August 2022
  1. HSV-Farbraum
  2. Konvertieren Sie das Bild in OpenCV in den HSV-Farbraum
  3. Farbe erkennen mit dem HSV-Farbraum in OpenCV
  4. Fazit
Der HSV-Farbraum mit OpenCV in Python

Bei der Verarbeitung von Bildern in der Programmierung wandeln wir sie in Variablen mit numerischen Werten um und bearbeiten solche Werte. Jedes Bild kann einige gewünschte Farben haben.

Wir verwenden Farbmodelle, um diese Farben numerischen Werten zuzuordnen. Einige gängige Farbmodelle sind RGB, CMYK, HSV und mehr.

Wir können die Bibliothek opencv verwenden, um Bilder und Videos in Python zu verarbeiten und damit zu arbeiten. Diese Bibliothek ist voll von Funktionen, die komplexe Algorithmen und Techniken für Bilder implementieren können.

Dieses Tutorial behandelt den HSV-Farbraum in der opencv-Bibliothek.

HSV-Farbraum

Standardmäßig stellt das RGB-Farbmodell Farben in Bildern dar. Dies liegt daran, dass RGB das am häufigsten verwendete Farbmodell in Grafiken ist und ein riesiges Farbspektrum darstellen kann.

Eines der nützlichsten Modelle ist jedoch das HSV-Modell.

Das HSV-Modell wird verwendet, um die Farbbereiche des RGB-Modells in einer zylindrischen Form darzustellen. Dieser Farbraum wird stark für die Objektverfolgung verwendet.

Das HSV-Farbmodell steht für Hue, Saturation und Brightness (Value).

Mit dem Attribut Hue wird der Farbton der verwendeten Farbe angegeben, mit dem Attribut Saturation wird der Anteil der verwendeten Farbe bestimmt. Mit dem Attribut Wert wird die Helligkeit der Farbe angegeben.

Konvertieren Sie das Bild in OpenCV in den HSV-Farbraum

Mit der opencv-Bibliothek können wir Bilder von einem Farbraum in einen anderen konvertieren. Dazu verwenden wir die Funktion cvtColor().

Wenn ein Bild mit der Funktion imread() gelesen wird, befindet es sich im RGB-Farbraum. Wir können dies mit der Funktion cvtColor() in HSV umwandeln.

Siehe folgendes Beispiel.

import cv2

i = cv2.imread("deftstack.png")
img = cv2.cvtColor(i, cv2.COLOR_BGR2HSV)
cv2.imshow("Final", img)

cv2.waitKey(0)
cv2.destroyAllWindows()

Ausgabe:

Konvertieren Sie Bilder mit der cvtColor-Funktion von RGB in HSV

Beachten Sie im obigen Beispiel das Attribut cv2.BGR2HSV, das in der Funktion cvtColor() angegeben ist. Es gibt an, dass wir das Bild vom RGB-Farbraum in den HSV-Farbraum konvertieren.

Die Kombination der Funktionen waitKey() und destroyAllWindows() wird verwendet, um zu warten, bis der Benutzer eine Taste drückt, bevor das Ausgabefenster geschlossen wird.

cv2.BGR2HSV konvertiert das Bild von RGB in HSV mit einem H-Bereich von 0 bis 180. Wir können auch cv2.BR2HSV_FULL verwenden, um das Bild in HSV mit einem H-Bereich von 0 bis 255 zu konvertieren.

Farbe erkennen mit dem HSV-Farbraum in OpenCV

Wie bereits erwähnt, dient dieser Farbraum hauptsächlich der Objektverfolgung. Wir können dieses Modell verwenden, um Masken zu erstellen, die bestimmte Farben aus einem Bild abbilden können.

Jede Farbe im HSV-Modell hat eine gewisse Farbpalette. Die oberen und unteren Grenzen ihres Bereichs können verwendet werden, um Farben zu erkennen.

Wir können die Funktion inRange() verwenden, um eine binäre Maske zurückzugeben, die eine bestimmte Farbe anhand ihrer oberen und unteren Grenzen des HSV-Farbraums erkennt.

Siehe Code unten.

import cv2
import numpy as np

img = cv2.imread("img3.jpeg")
hsv_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
bound_lower = np.array([25, 20, 20])
bound_upper = np.array([100, 255, 255])
mask_green = cv2.inRange(hsv_img, bound_lower, bound_upper)
cv2.imshow("Mask", mask_green)

cv2.waitKey(0)
cv2.destroyAllWindows()

Ausgabe:

Finden Sie Farben mithilfe der HSV-Bereiche mit der inRange-Funktion

Im obigen Beispiel erstellen wir eine binäre Maske, um die grüne Farbe in einem Bild zu erkennen. Das Bild wird in den HSV-Farbraum konvertiert und der Bereich für die grüne Farbe definiert.

Wir verwenden die oberen und unteren Grenzen mit der Funktion inRange, um die Farbe zu erkennen und die Maske zurückzugeben.

Diese Maske kann auf das Bild abgebildet werden, um die Farbe zu erkennen und die Grenzen für die gegebene Farbe zu ziehen.

Fazit

Dieses Tutorial behandelte Farbräume und konzentrierte sich auf den HSV-Farbraum in opencv.

Wir begannen mit der Diskussion der Grundlagen des HSV-Farbraums und wie Farbe in diesem Modell abgebildet wird. Auch der Unterschied zum weit verbreiteten RGB-Modell wurde hervorgehoben.

Wir haben auch gezeigt, wie man ein Bild mit opencv in HSV konvertiert.

Der HSV-Farbraum wird auch für die Objektverfolgung verwendet. Wir haben besprochen, wie man es verwendet, um Farben in einem bestimmten Bild anhand der oberen und unteren Grenzen der bestimmten Farbe mit der Funktion inRange aus der Bibliothek opencv zu erkennen.

Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

Verwandter Artikel - Python OpenCV