Costruisci una tavolozza di colori usando Python

Costruisci una tavolozza di colori usando Python

Gli esseri umani possono distinguere circa 10 milioni di colori. Per percepirli, hai bisogno di qualcosa noto come una tavolozza di colori. Una tavolozza di colori contiene gli strumenti per visualizzare l’intera gamma di colori visibili all’occhio umano. Nel mondo reale, li usi per creare disegni estetici su carta mentre digitalmente li usi per aggiungere colore agli elementi dello schermo.

In definitiva, il tuo computer codifica tutte le diverse sfumature che vedi sullo schermo utilizzando un formato particolare. Con Python, puoi sviluppare una tavolozza di colori con codifica RGB in poche righe di codice grazie a OpenCV e al modulo NumPy.

Il modulo OpenCV e NumPy

Puoi analizzare immagini e video utilizzando OpenCV. È gratuito, open source, semplice da usare e ricco di librerie utili. Questi forniscono tecniche per classificare, localizzare e tracciare oggetti sia a due che a tre dimensioni. Per installare OpenCV nel tuo ambiente, apri un terminale ed esegui:

pip install opencv-python

Il modulo NumPy è un’altra libreria popolare che vedrai utilizzare da molti programmi Python. NumPy, Python numerico, è un modulo che puoi utilizzare per l’analisi dei dati e il calcolo scientifico. Fornisce oggetti array n-dimensionali e operazioni matematiche che aiutano nella manipolazione di questi array.

Per installare NumPy nel tuo ambiente, esegui:

pip install numpy

In genere, utilizzerai OpenCV per elaborare le immagini utilizzando tecniche come il rilevamento dei bordi. È quindi possibile utilizzare NumPy per eseguire l’analisi dei dati sull’immagine elaborata. Utilizzando questa combinazione è possibile creare e decodificare un codice QR, classificare le immagini, eseguire il riconoscimento ottico dei caratteri e costruire sistemi di videosorveglianza in grado di rilevare il movimento e tracciare le persone in tempo reale.

Come costruire una tavolozza di colori usando Python

Segui questi passaggi per creare una tavolozza dei colori utilizzando il modulo OpenCV e NumPy in Python.

Inizia importando i moduli OpenCV e NumPy. Definire una funzione denominata emptyfunction() che contenga l’istruzione pass. L’istruzione pass funge da segnaposto per il codice che puoi scrivere in futuro. Ciò è particolarmente utile con funzioni come createTrackbar, che utilizzerai in seguito. Richiede una funzione di callback valida e per ora puoi passare emptyFunction come segnaposto.

import cv2
import numpy as np

def emptyFunction():
    pass

Genera un array tridimensionale di dimensioni 512 * 512 * 3 con un tipo di dati uint8 utilizzando la funzione zero() di NumPy . Ogni matrice sarà composta da 512 colonne e 512 righe. uint8 rappresenta un numero intero senza segno, quindi il programma riempie l’array con zeri.

image = np.zeros((512, 512, 3), np.uint8)

Imposta il nome della finestra che il programma visualizzerà e passalo alla funzione namedWindow() per creare una finestra:

windowName = "OpenCV Color Palette"
cv2.namedWindow(windowName)

Successivamente, genera tre barre di traccia per i componenti di colore rosso, verde e blu. Puoi farlo usando la funzione createTrackbar() di OpenCV . In primo luogo, passa l’etichetta come rosso, blu o verde. In secondo luogo, è necessario passare il nome della finestra in cui si desidera posizionare queste barre, ad esempio windowName.

Il terzo parametro è il limite minimo della track bar, 0 in questo caso. Il quarto parametro specifica il valore massimo, che è 255 per un valore di colore a 24 bit. Il quinto e ultimo parametro è una funzione di callback per la quale createTrackbar richiede una funzione valida. Questo è il motivo per cui hai creato emptyFunction in precedenza, per fungere da segnaposto.

cv2.createTrackbar('Blue', windowName, 0, 255, emptyFunction)
cv2.createTrackbar('Green', windowName, 0, 255, emptyFunction)
cv2.createTrackbar('Red', windowName, 0, 255, emptyFunction)

Dichiara un ciclo while infinito e passa il nome della finestra insieme all’immagine che vuoi visualizzare alla funzione imshow() di OpenCV . Poiché l’immagine contiene una matrice tridimensionale di zeri, inizialmente il programma visualizza una schermata nera.

Controlla se l’utente ha premuto il tasto Esc testando il valore di waitkey() rispetto a 27 (il codice ASCII per il tasto Escape). La funzione waitkey() visualizza la finestra per il dato numero di millisecondi o finché non si preme un tasto. Passandone uno come input, visualizza la finestra per un millisecondo ma si rigenera a causa del ciclo while infinito.

Per ottenere la posizione corrente della barra della traccia, passare il nome della barra della traccia insieme al nome della finestra a getTrackbarPos() . Ripeti questo passaggio per i tre componenti di colore separati, blu, verde e rosso. Utilizzare l’operatore slice per assegnare i tre valori all’array di immagini. Questo sostituirà il precedente set di valori, inizialmente tutti zeri, con i valori correnti in base alle posizioni della barra di traccia.

while (True):
    cv2.imshow(windowName, image)

    if cv2.waitKey(1) == 27:
        break


    blue = cv2.getTrackbarPos('Blue', windowName)
    green = cv2.getTrackbarPos('Green', windowName)
    red = cv2.getTrackbarPos('Red', windowName)
    image[:] = [blue, green, red]
    print(blue, green, red)

Una volta che l’utente preme il tasto Esc, usa destroyAllWindows() per chiudere le finestre aperte dal programma:

cv2.destroyAllWindows()

Infine, metti tutto insieme ed eseguilo per controllare e visualizzare la tavolozza dei colori.

L’output del programma della tavolozza dei colori Python

Durante l’esecuzione del programma sopra, viene visualizzata una finestra che contiene tre barre di traccia per i colori blu, verde e rosso. Le barre della traccia si spostano da un intervallo compreso tra 0 e 255. Quando si variano i valori delle diverse barre, si dovrebbero vedere diverse sfumature di colori nella sezione sottostante.

In questo primo esempio, puoi vedere l’impostazione della barra blu come 0, verde come 69 e rosso come 255. Il colore di output risultante è una sfumatura di arancione/rosso. Inoltre, la finestra del terminale visualizza i valori del colore come 0 69 255.

Tavolozza dei colori per il rosso arancio

Allo stesso modo, impostando la barra Blu a 130, Verde a 0 e Rosso a 75, otterrai un colore Indaco.

Tavolozza dei colori per l'indaco

Le varie applicazioni di OpenCV

OpenCV offre preziose funzioni per attività come l’elaborazione delle immagini, il riconoscimento di oggetti, il riconoscimento facciale e il tracciamento. Usando OpenCV puoi produrre applicazioni di visione artificiale in tempo reale che sarebbero un vantaggio in aree come la robotica, l’automazione industriale, l’imaging medico e i sistemi di sorveglianza.

Il futuro della visione artificiale è promettente. Sarai in grado di utilizzare la visione artificiale per aiutare i non vedenti, ottenere una migliore crescita in agricoltura, migliorare la sicurezza stradale utilizzando auto a guida autonoma e persino navigare su altri pianeti, come Marte.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *