Converti l'immagine in scala di grigi in Python

Muhammad Waiz Khan 30 gennaio 2023
  1. Converti un’immagine in scala di grigi in Python usando il metodo image.convert() della libreria pillow
  2. Converti un’immagine in scala di grigi in Python usando il metodo color.rgb2gray() del modulo scikit-image
  3. Converti un’immagine in scala di grigi in Python usando il metodo cv2.imread() della libreria OpenCV
  4. Converti un’immagine in scala di grigi in Python usando la formula di conversione e la libreria Matplotlib
Converti l'immagine in scala di grigi in Python

Questo tutorial spiegherà vari metodi per convertire un’immagine in scala di grigi in Python. Un’immagine in scala di grigi è un’immagine in cui un singolo pixel rappresenta la quantità di luce o contiene solo informazioni sull’intensità della luce. È un’immagine unidimensionale e ha solo diverse sfumature di grigio.

Poiché le immagini in scala di grigi sono unidimensionali, vengono utilizzate per ridurre la complessità di addestramento dei modelli in vari problemi e in algoritmi come il rilevamento dei bordi Canny.

Questo articolo esaminerà come convertire un’immagine in scala di grigi o leggere un’immagine come scala di grigi in Python utilizzando vari metodi dei moduli di Python.

Converti un’immagine in scala di grigi in Python usando il metodo image.convert() della libreria pillow

Il metodo image.convert(mode, ..) prende un’immagine come input e la converte nel tipo di immagine desiderato specificato nell’argomento mode. La modalità include immagini in bianco e nero pixel a 1 e 8 bit, immagini RGB, immagini HSV, immagini BGR e immagini LAB, ecc.

Poiché vogliamo convertire la nostra immagine in scala di grigi, possiamo passare 1 come argomento di modalità per la modalità in bianco e nero a 1 bit, L per l’immagine in bianco e nero a 8 bit e LA per la modalità alfa. Il codice di esempio sotto mostra come utilizzare il metodo image.convert() della libreria pillow per convertire un’immagine in scala di grigi in Python:

from PIL import Image

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

Immagine originale:

esempio di immagine

Immagine in scala di grigi convinta:

immagine esempio grigia

Converti un’immagine in scala di grigi in Python usando il metodo color.rgb2gray() del modulo scikit-image

Il color.rgb2gray() prende un’immagine in formato RGB come input e restituisce una copia in scala di grigi dell’immagine in ingresso. L’esempio di codice seguente mostra come utilizzare il metodo color.rgb2gray() del modulo scikit-image per ottenere un’immagine in scala di grigi in Python.

from skimage import color
from skimage import io

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

Converti un’immagine in scala di grigi in Python usando il metodo cv2.imread() della libreria OpenCV

Un altro metodo per ottenere un’immagine in scala di grigi è leggere direttamente l’immagine in modalità scala di grigi, possiamo leggere un’immagine in scala di grigi usando il metodo cv2.imread(path, flag) della libreria OpenCV.

Supponiamo che il valore flag del metodo cv2.imread() sia uguale a 1. In tal caso, leggerà l’immagine escludendo il canale alfa, se 0 leggerà l’immagine come scala di grigi, e se uguale al metodo -1 leggerà l’immagine comprese le informazioni sul canale alfa.

Pertanto, possiamo leggere un’immagine come scala di grigi da un dato percorso usando il metodo imread() passando il valore dell’argomento flag come 1.

Il codice di esempio seguente mostra come utilizzare il metodo cv2.imread() per leggere un’immagine in scala di grigi in Python:

import cv2

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

Converti un’immagine in scala di grigi in Python usando la formula di conversione e la libreria Matplotlib

Possiamo anche convertire un’immagine in scala di grigi usando la formula standard di conversione da RGB a scala di grigi che è imgGray = 0.2989 * R + 0.5870 * G + 0.1140 * B.

Possiamo implementare questo metodo usando la libreria Matplotlib in Python, prima dobbiamo leggere l’immagine usando il metodo mpimg.imread() e poi ottenere gli array delle dimensioni rossa, blu e verde dell’immagine RGB dopo aver ottenuto gli array possiamo applicare la formula su di essi per ottenere l’immagine in scala di grigi. Abbiamo bisogno di moltiplicare gli array complete con i valori dati nella formula per ottenere l’immagine in scala di grigi.

L’esempio di codice seguente mostra come implementare la formula di conversione da RGB a scala di grigi in Python utilizzando la libreria Matplotlib.

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()

Articolo correlato - Python Image