Bild in Python in Graustufen konvertieren

Muhammad Waiz Khan 30 Januar 2023
  1. Konvertieren eines Bildes in Graustufen in Python mit der Methode image.convert() der Bibliothek pillow
  2. Konvertieren eines Bildes in Graustufen in Python mit der Methode color.rgb2gray() des Moduls scikit-image
  3. Konvertieren eines Bildes in Graustufen in Python mit der Methode cv2.imread() der Bibliothek OpenCV
  4. Konvertieren eines Bildes in Graustufen in Python mit Hilfe der Konvertierungsformel und der Bibliothek Matplotlib
Bild in Python in Graustufen konvertieren

In diesem Tutorial werden verschiedene Methoden zur Konvertierung eines Bildes in Graustufen in Python erklärt. Ein Graustufenbild ist ein Bild, in dem ein einzelnes Pixel die Lichtmenge repräsentiert oder nur Informationen zur Lichtintensität enthält. Es ist ein eindimensionales Bild und hat nur verschiedene Grautöne.

Da die Graustufenbilder eindimensional sind, werden sie verwendet, um die Trainingskomplexität von Modellen bei verschiedenen Problemen und in Algorithmen wie der Canny-Kantenerkennung zu verringern.

In diesem Artikel wird untersucht, wie wir in Python ein Bild in Graustufen umwandeln oder ein Bild als Graustufen lesen können, indem wir verschiedene Methoden der Python-Module verwenden.

Konvertieren eines Bildes in Graustufen in Python mit der Methode image.convert() der Bibliothek pillow

Die Methode image.convert(mode, ..) nimmt ein Bild als Eingabe und konvertiert es in den gewünschten, im Argument mode angegebenen Bildtyp. Der Modus umfasst 1-Bit- und 8-Bit-Pixel-Schwarz-Weiß-Bilder, RGB-Bilder, HSV-Bilder, BGR-Bilder und, LAB-Bilder, usw.

Da wir unser Bild in Graustufen umwandeln wollen, können wir 1 als Modus-Argument für den 1-Bit-Schwarz-Weiß-Modus, L für 8-Bit-Schwarz-Weiß-Bilder und LA für den Alpha-Modus übergeben. Der folgende Beispielcode demonstriert, wie man die Methode image.convert() der Bibliothek pillow verwendet, um ein Bild in Python in Graustufen zu konvertieren:

from PIL import Image

img = Image.open("test.jpg")
imgGray = img.convert("L")
imgGray.save("test_gray.jpg")

Originalbild:

Beispielbild

Konvertiertes Graustufenbild:

Bildbeispiel grau

Konvertieren eines Bildes in Graustufen in Python mit der Methode color.rgb2gray() des Moduls scikit-image

Die Methode color.rgb2gray() nimmt ein Bild im RGB-Format als Eingabe und gibt eine Graustufen-Kopie des Eingabebildes zurück. Das folgende Code-Beispiel zeigt, wie man mit der Methode color.rgb2gray() des Moduls scikit-image ein Graustufenbild in Python erhält.

from skimage import color
from skimage import io

img = io.imread("test.jpg")
imgGray = color.rgb2gray(img)

Konvertieren eines Bildes in Graustufen in Python mit der Methode cv2.imread() der Bibliothek OpenCV

Eine weitere Methode, um ein Bild in Graustufen zu erhalten, ist das direkte Lesen des Bildes im Graustufenmodus. Wir können ein Bild in Graustufen lesen, indem wir die Methode cv2.imread(path, flag) der Bibliothek OpenCV verwenden.

Nehmen wir an, dass der flag-Wert der cv2.imread()-Methode gleich 1 ist. In diesem Fall wird das Bild ohne den Alphakanal gelesen, bei 0 wird das Bild als Graustufenbild gelesen, und bei -1 wird das Bild inklusive der Alphakanal-Informationen gelesen.

Daher können wir ein Bild als Graustufenbild aus einem gegebenen Pfad mit der Methode imread() lesen, indem wir den Wert des Arguments flag als 1 übergeben.

Der folgende Beispielcode zeigt, wie man die Methode cv2.imread() verwendet, um ein Bild in Python in Graustufen zu lesen:

import cv2

imgGray = cv2.imread("test.jpg", 0)

Konvertieren eines Bildes in Graustufen in Python mit Hilfe der Konvertierungsformel und der Bibliothek Matplotlib

Wir können ein Bild auch in Graustufen umwandeln, indem wir die Standardformel für die Umwandlung von RGB in Graustufen verwenden, die lautet: imgGray = 0.2989 * R + 0.5870 * G + 0.1140 * B.

Wir können diese Methode mit der Bibliothek Matplotlib in Python implementieren. Zuerst müssen wir das Bild mit der Methode mpimg.imread() einlesen und dann die Matrizen der roten, blauen und grünen Dimension des RGB-Bildes erhalten, nachdem wir die Matrizen erhalten haben, können wir die Formel auf sie anwenden, um das Graustufenbild zu erhalten. Wir müssen die vollständigen Matrizen mit den in der Formel angegebenen Werten multiplizieren, um das Graustufenbild zu erhalten.

Das folgende Codebeispiel zeigt, wie die Formel für die Umwandlung von RGB in Graustufen in Python mit der Bibliothek Matplotlib implementiert werden kann.

from matplotlib import pyplot as plt
import matplotlib.image as mpimg

img = mpimg.imread("test.jpg")

R, G, B = img[:, :, 0], img[:, :, 1], img[:, :, 2]
imgGray = 0.2989 * R + 0.5870 * G + 0.1140 * B
plt.imshow(imgGray, cmap="gray")
plt.show()

Verwandter Artikel - Python Image