Air Canva
La computer vision è un campo dell'intelligenza artificiale che consente ai computer e ai sistemi di ricavare informazioni significative da immagini digitali, video e altri input visivi e di intraprendere azioni o formulare raccomandazioni sulla base di tali informazioni. Se l'intelligenza artificiale consente ai computer di pensare, la computer vision permette loro di vedere, osservare e capire.
La computer vision addestra le macchine a svolgere queste funzioni, ma deve farlo in tempi molto più brevi con telecamere, dati e algoritmi piuttosto che con retine, nervi ottici e corteccia visiva. Poiché un sistema addestrato a ispezionare prodotti o a sorvegliare un impianto di produzione può analizzare migliaia di prodotti o processi al minuto, notando difetti o problemi impercettibili, può superare rapidamente le capacità umane.
Esegue analisi dei dati più e più volte fino a discernere le distinzioni e, infine, a riconoscere le immagini. Ad esempio, per addestrare un computer a riconoscere i pneumatici di un'automobile, è necessario alimentarlo con una grande quantità di immagini di pneumatici e di elementi ad essi correlati per imparare le differenze e riconoscere un pneumatico, soprattutto se privo di difetti.
A questo scopo si utilizzano due tecnologie essenziali: un tipo di apprendimento automatico chiamato deep learning e una rete neurale convoluzionale (CNN).
Una Convolutional Neural Network, nota anche come CNN o ConvNet, è una classe delle neural networks specializzata nell'elaborazione di dati con una topologia a griglia, come le immagini. Un'immagine digitale è una rappresentazione binaria di dati visivi. Contiene una serie di pixel disposti in modo reticolare, con valori di pixel che indicano la luminosità e il colore di ciascun pixel.
Questo script fornisce un'air canva, in modo che si possa disegnare usando le dita su una lavagna virtuale.
A questo scopo, vengono definiti due moduli:
La computer vision addestra le macchine a svolgere queste funzioni, ma deve farlo in tempi molto più brevi con telecamere, dati e algoritmi piuttosto che con retine, nervi ottici e corteccia visiva. Poiché un sistema addestrato a ispezionare prodotti o a sorvegliare un impianto di produzione può analizzare migliaia di prodotti o processi al minuto, notando difetti o problemi impercettibili, può superare rapidamente le capacità umane.
Esegue analisi dei dati più e più volte fino a discernere le distinzioni e, infine, a riconoscere le immagini. Ad esempio, per addestrare un computer a riconoscere i pneumatici di un'automobile, è necessario alimentarlo con una grande quantità di immagini di pneumatici e di elementi ad essi correlati per imparare le differenze e riconoscere un pneumatico, soprattutto se privo di difetti.
A questo scopo si utilizzano due tecnologie essenziali: un tipo di apprendimento automatico chiamato deep learning e una rete neurale convoluzionale (CNN).
Una Convolutional Neural Network, nota anche come CNN o ConvNet, è una classe delle neural networks specializzata nell'elaborazione di dati con una topologia a griglia, come le immagini. Un'immagine digitale è una rappresentazione binaria di dati visivi. Contiene una serie di pixel disposti in modo reticolare, con valori di pixel che indicano la luminosità e il colore di ciascun pixel.
Questo script fornisce un'air canva, in modo che si possa disegnare usando le dita su una lavagna virtuale.
A questo scopo, vengono definiti due moduli:
- 'main.py' che è responsabile del 'disegno' sulla lavagna virtuale
- 'hand_tracking.py' che è responsabile della rilevazione e del tracciamento delle dita della mano.
- '__init__': inizializza le variabili mode=False che identifica il modo di riconoscimento delle immagini se sono statiche oppure uno streaming, maxHands=2 che identifica il massimo numero di mani da rilevare, detectionCon=0.5 che identifica il minore score per dichiarare con successo che è stata conosciuta una mano, trackCon=0.5 che identifica il minimo score per il quale un landmark viene riconosciuto cono successo, complexity=1 che identifica la complessità del modello di riferimento della mano.
- 'findHands': prende un'immagine come input e la converte da BGR a RGB. Successivamente, elabora l'immagine per trovare le mani e disegna le landmarks sulle mani rilevate.
- 'findPosition': prende un'immagine, il numero della mano e un valore booleano come input e restituisce una lista di posizioni landmarks. La funzione trova la posizione delle mani e disegna le landmarks sull'immagine.
- 'fingersUp': controlla se l'estremità delle dita è più alta del landmark precedente e restituisce una lista di $1$ o $0$ a seconda della posizione delle dita.
- main il codice acquisisce il video dalla webcam, trova le landmarks sulle mani, calcola la posizione delle mani, ridimensiona l'immagine alle dimensioni dello schermo, capovolge l'immagine orizzontalmente, calcola i fotogrammi al secondo, disegna i fotogrammi al secondo sull'immagine, mostra l'immagine e controlla se l'utente ha premuto il tasto "q". Se l'utente ha premuto il tasto "q", il programma si ferma.
- Se l'utente solleva solo il dito indice, allora può disegnare e scrivere sull'air canva. Il colore predefinito è il blu.
- Se l'utente solleva il dito indice e medio (mantenendo giù il pollice), il programma va in modalità 'selezione'. In questo caso l'utente smetterà di scrivere e potrà andare nella parte alta della finestra. Si aprirà il menù a tendina nel quale l'utente potrà cambiare colore, cancellare, salvare l'immagine oppure pulire la lavagna.
- Se vengono rilevati solo il pollice e l'indice, si può andare a modificare la dimensione del 'pennello': se si aumenta la distanza tra pollice e indice, aumenterà la dimensione del pennello, mentre se si avvicinano, diminuirà la dimensione del pennello.
- Se si sollevano il pollice, l'indice e il medio contemporaneamente, il programma riconoscerà il comando del salvare senza dover andare a selezionare dal menù. In questo caso verrà attivato un timer di 3 secondi, in modo che l'utente possa stabilizzarsi. Verranno salvate due immagini: una così come vede l'immagine l'utente, ovvero con lo sfondo; una con il disengo e lo sfondo bianco. L'immagine salvata sarà in formato '.jpg'.
- Se si sollevano tutti e cinque le dita, Il programma capisce che deve arrestarsi e si chiude.
- Vengono inizializzate due immagini una bianca np.ones((720, 1280,3),np.uint8)*255 che non subirà variazioni nel processo e una nera np.zeros((720, 1280, 3), np.uint8) che servirà per rendere il background trasparente e visualizzare l'utente mentre scrive.
- Successivamente tramite il modulo cv2 viene letta l'immagine in tempo reale dalla telecamera
- Si va a disegnare sull'immagine in tempo reale, su quella con sfondo bianco e quella su sfondo nero.
- Si converte l'immagine con sfondo nero in scala di grigi
- Viene fatta una trasformazione tramite la funzione 'threshold' di cv2 in modo che i valori dell'array che sono sotto la soglia vengono impostati automaticamente a nero, mentre quelli che sono sopra al bianco.
- Viene convertita l'immagine al BRG.
- Infine viene sottratta questa immagine a quella di partenza della videocamera, rendendo così lo sfondo trasparente.

La computer vision è un campo dell'intelligenza artificiale che consente ai computer e ai sistemi di ricavare informazioni significative da immagini digitali, video e altri input visivi e di intraprendere azioni o formulare raccomandazioni sulla base di tali informazioni. Se l'intelligenza artificiale consente ai computer di pensare, la computer vision permette loro di vedere, osservare e capire.
La computer vision addestra le macchine a svolgere queste funzioni, ma deve farlo in tempi molto più brevi con telecamere, dati e algoritmi piuttosto che con retine, nervi ottici e corteccia visiva. Poiché un sistema addestrato a ispezionare prodotti o a sorvegliare un impianto di produzione può analizzare migliaia di prodotti o processi al minuto, notando difetti o problemi impercettibili, può superare rapidamente le capacità umane.
Esegue analisi dei dati più e più volte fino a discernere le distinzioni e, infine, a riconoscere le immagini. Ad esempio, per addestrare un computer a riconoscere i pneumatici di un'automobile, è necessario alimentarlo con una grande quantità di immagini di pneumatici e di elementi ad essi correlati per imparare le differenze e riconoscere un pneumatico, soprattutto se privo di difetti.
A questo scopo si utilizzano due tecnologie essenziali: un tipo di apprendimento automatico chiamato deep learning e una rete neurale convoluzionale (CNN).
Una Convolutional Neural Network, nota anche come CNN o ConvNet, è una classe delle neural networks specializzata nell'elaborazione di dati con una topologia a griglia, come le immagini. Un'immagine digitale è una rappresentazione binaria di dati visivi. Contiene una serie di pixel disposti in modo reticolare, con valori di pixel che indicano la luminosità e il colore di ciascun pixel.
Questo script fornisce un'air canva, in modo che si possa disegnare usando le dita su una lavagna virtuale.
A questo scopo, vengono definiti due moduli:
La computer vision addestra le macchine a svolgere queste funzioni, ma deve farlo in tempi molto più brevi con telecamere, dati e algoritmi piuttosto che con retine, nervi ottici e corteccia visiva. Poiché un sistema addestrato a ispezionare prodotti o a sorvegliare un impianto di produzione può analizzare migliaia di prodotti o processi al minuto, notando difetti o problemi impercettibili, può superare rapidamente le capacità umane.
Esegue analisi dei dati più e più volte fino a discernere le distinzioni e, infine, a riconoscere le immagini. Ad esempio, per addestrare un computer a riconoscere i pneumatici di un'automobile, è necessario alimentarlo con una grande quantità di immagini di pneumatici e di elementi ad essi correlati per imparare le differenze e riconoscere un pneumatico, soprattutto se privo di difetti.
A questo scopo si utilizzano due tecnologie essenziali: un tipo di apprendimento automatico chiamato deep learning e una rete neurale convoluzionale (CNN).
Una Convolutional Neural Network, nota anche come CNN o ConvNet, è una classe delle neural networks specializzata nell'elaborazione di dati con una topologia a griglia, come le immagini. Un'immagine digitale è una rappresentazione binaria di dati visivi. Contiene una serie di pixel disposti in modo reticolare, con valori di pixel che indicano la luminosità e il colore di ciascun pixel.
Questo script fornisce un'air canva, in modo che si possa disegnare usando le dita su una lavagna virtuale.
A questo scopo, vengono definiti due moduli:
- 'main.py' che è responsabile del 'disegno' sulla lavagna virtuale
- 'hand_tracking.py' che è responsabile della rilevazione e del tracciamento delle dita della mano.
- '__init__': inizializza le variabili mode=False che identifica il modo di riconoscimento delle immagini se sono statiche oppure uno streaming, maxHands=2 che identifica il massimo numero di mani da rilevare, detectionCon=0.5 che identifica il minore score per dichiarare con successo che è stata conosciuta una mano, trackCon=0.5 che identifica il minimo score per il quale un landmark viene riconosciuto cono successo, complexity=1 che identifica la complessità del modello di riferimento della mano.
- 'findHands': prende un'immagine come input e la converte da BGR a RGB. Successivamente, elabora l'immagine per trovare le mani e disegna le landmarks sulle mani rilevate.
- 'findPosition': prende un'immagine, il numero della mano e un valore booleano come input e restituisce una lista di posizioni landmarks. La funzione trova la posizione delle mani e disegna le landmarks sull'immagine.
- 'fingersUp': controlla se l'estremità delle dita è più alta del landmark precedente e restituisce una lista di $1$ o $0$ a seconda della posizione delle dita.
- main il codice acquisisce il video dalla webcam, trova le landmarks sulle mani, calcola la posizione delle mani, ridimensiona l'immagine alle dimensioni dello schermo, capovolge l'immagine orizzontalmente, calcola i fotogrammi al secondo, disegna i fotogrammi al secondo sull'immagine, mostra l'immagine e controlla se l'utente ha premuto il tasto "q". Se l'utente ha premuto il tasto "q", il programma si ferma.
- Se l'utente solleva solo il dito indice, allora può disegnare e scrivere sull'air canva. Il colore predefinito è il blu.
- Se l'utente solleva il dito indice e medio (mantenendo giù il pollice), il programma va in modalità 'selezione'. In questo caso l'utente smetterà di scrivere e potrà andare nella parte alta della finestra. Si aprirà il menù a tendina nel quale l'utente potrà cambiare colore, cancellare, salvare l'immagine oppure pulire la lavagna.
- Se vengono rilevati solo il pollice e l'indice, si può andare a modificare la dimensione del 'pennello': se si aumenta la distanza tra pollice e indice, aumenterà la dimensione del pennello, mentre se si avvicinano, diminuirà la dimensione del pennello.
- Se si sollevano il pollice, l'indice e il medio contemporaneamente, il programma riconoscerà il comando del salvare senza dover andare a selezionare dal menù. In questo caso verrà attivato un timer di 3 secondi, in modo che l'utente possa stabilizzarsi. Verranno salvate due immagini: una così come vede l'immagine l'utente, ovvero con lo sfondo; una con il disengo e lo sfondo bianco. L'immagine salvata sarà in formato '.jpg'.
- Se si sollevano tutti e cinque le dita, Il programma capisce che deve arrestarsi e si chiude.
- Vengono inizializzate due immagini una bianca np.ones((720, 1280,3),np.uint8)*255 che non subirà variazioni nel processo e una nera np.zeros((720, 1280, 3), np.uint8) che servirà per rendere il background trasparente e visualizzare l'utente mentre scrive.
- Successivamente tramite il modulo cv2 viene letta l'immagine in tempo reale dalla telecamera
- Si va a disegnare sull'immagine in tempo reale, su quella con sfondo bianco e quella su sfondo nero.
- Si converte l'immagine con sfondo nero in scala di grigi
- Viene fatta una trasformazione tramite la funzione 'threshold' di cv2 in modo che i valori dell'array che sono sotto la soglia vengono impostati automaticamente a nero, mentre quelli che sono sopra al bianco.
- Viene convertita l'immagine al BRG.
- Infine viene sottratta questa immagine a quella di partenza della videocamera, rendendo così lo sfondo trasparente.