Arbeiten mit Farbraumen im Labor

OpenCVOpenCVBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

Willkommen zu diesem Tutorial zu OpenCV-Python-Farbraum!

Ein Farbraum ist eine Möglichkeit, die Farbkanäle in einem Bild darzustellen. Es gibt mehrere verschiedene Farbraume, aber die drei am häufigsten verwendeten sind:

  • BGR (Blau, Grün, Rot): Der standardmäßige Farbraum von OpenCV.
  • Graustufen: Eine Graustufen-Darstellung des Bildes.
  • HSV (Hue, Saturation, Value): Eine zylindrische Koordinaten-Darstellung von Farben.
    In diesem Tutorial werden wir uns auf das Konvertieren von Bildern zwischen den BGR-, Graustufen- und HSV-Farbraumen konzentrieren.

Konvertieren von Bildern zwischen Farbraumen

Um Bilder zwischen Farbraumen zu konvertieren, verwenden wir die Funktion cv.cvtColor(). Zunächst importieren wir die erforderlichen Bibliotheken und lesen ein Bild:

Öffnen der Python-Shell

Öffnen Sie die Python-Shell, indem Sie den folgenden Befehl in der Konsole eingeben.

python3

Verwenden Sie die Funktion cv.imread(), um das Bild image.jpg zu lesen, das wir im Standardordner vorbereitet haben.

import cv2 as cv
import numpy as np

## Lese das Bild
image = cv.imread('image.jpg')

BGR nach Graustufen

Um das Bild von BGR in Graustufen zu konvertieren, verwenden Sie das Flag cv.COLOR_BGR2GRAY:

## Konvertiere das Bild in Graustufen
gray_image = cv.cvtColor(image, cv.COLOR_BGR2GRAY)

BGR nach HSV

Um das Bild von BGR in HSV zu konvertieren, verwenden Sie das Flag cv.COLOR_BGR2HSV:

## Verwende den HSV-Farbraum. Der HSV-Farbraum wird hauptsächlich zur Objekterkennung verwendet
hsv_image = cv.cvtColor(image, cv.COLOR_BGR2HSV)

Anzeigen der konvertierten Bilder

Um das ursprüngliche und die konvertierten Bilder anzuzeigen, verwenden Sie die Funktionen cv.imwrite():

## Speichere das Bild in die angegebene Datei
cv.imwrite('image.jpg', image)
cv.imwrite('gray_image.jpg', gray_image)
cv.imwrite('hsv_image.jpg', hsv_image)

Extrahieren eines gefärbten Objekts

Um ein bestimmtes gefärbtes Objekt aus einem Bild zu extrahieren, können Sie die Funktion cv.inRange() verwenden. Für dieses Beispiel extrahieren wir ein blaues Objekt aus dem Bild.

Definieren des Farbbereichs

Definieren Sie zunächst die unteren und oberen Grenzen der blauen Farbe im HSV-Farbraum:

## Blau wird im HSV bei einer Farbtonlage von rund 240 Grad aus 360 Grad dargestellt.
## Der Farbtonbereich in OpenCV-HSV ist 0-180, um den Wert in 8 Bit zu speichern.
## Somit wird blau im OpenCV-HSV als Wert von H von ungefähr 240 / 2 = 120 dargestellt.
## Um blau korrekt zu erkennen, können die folgenden Werte gewählt werden:
blue_lower = np.array([100, 150, 0], np.uint8)
blue_upper = np.array([140, 255, 255], np.uint8)

Bildschwellenwertung

Wenden Sie einen Bildschwellenwert auf das HSV-Bild an, um nur die blauen Farben zu erhalten:

## Maske der blauen Farbe
blue_mask = cv.inRange(hsv_image, blue_lower, blue_upper)

Anwenden der Maske

Wenden Sie die Maske auf das ursprüngliche Bild an, um das blaue Objekt zu extrahieren:

## Verwende die Maske, um das blaue Objekt zu extrahieren
blue_object = cv.bitwise_and(image, image, mask=blue_mask)

Anzeigen des extrahierten Objekts

Zeigen Sie das ursprüngliche Bild und das extrahierte blaue Objekt an:

## Speichere das Bild in die angegebene Datei
cv.imwrite('blue_object.jpg', blue_object)

Zusammenfassung

In diesem Tutorial haben wir die Grundlagen von OpenCV-Python-Farbraumen behandelt. Mit diesen Kenntnissen können Sie jetzt mit verschiedenen Farbraumen arbeiten und sie auf verschiedene Bildverarbeitungsaufgaben anwenden. Sie können auch mit anderen von OpenCV unterstützten Farbraumen wie LAB oder YCrCb experimentieren.