opencv

Visione artificiale Nozioni di base

Visione artificiale Nozioni di base
Opencv (Open Source Computer Vision Library) è un modulo Python utilizzato per la visione artificiale. OpenCV è un modulo gratuito e open source che contiene centinaia di algoritmi per eseguire varie attività. Qualsiasi cosa, dal riconoscimento facciale al rilevamento del movimento, può essere eseguita utilizzando OpenCV. Tuttavia, in questa guida, esamineremo le basi di OpenCV.

Innanzitutto, installiamo OpenCV:

pip3 installa opencv-python

Leggi e mostra immagini

La prima cosa che dobbiamo imparare è leggere e scrivere immagini. La lettura di un file immagine, l'immissione del percorso completo del file o il nome del file (se il file si trova nella cartella python) e l'aggiunta di un flag viene eseguita utilizzando cv2.non ho letto(). Il flag può assumere il valore di 1 (per un'immagine a colori), 0 (per scala di grigi) o -1 (per un'immagine a colori con canali). Si può usare il cv2.funzione imshow() per mostrare l'immagine; qui vengono passati due argomenti: un nome per l'immagine e l'immagine da mostrare. Successivamente, usiamo il cv2.funzione waitKey() per attendere un input da tastiera; uno 0 per il cv2.La funzione waitKey(0) implica un tempo di attesa permanente. D'altra parte, il cv2.La funzione destroyAllWindows() chiuderà le finestre.

Questo leggerà e aprirà un'immagine e manterrà l'immagine aperta finché non la chiudi:

importa cv2
immagine = cv2.imread('LinuxLogo.jpg', 1)
cv2.imshow('immagine', immagine)
cv2.waitKey(0)
cv2.distruggereTutteWindows()

Scrivi immagini

Usiamo il cv2.funzione imwrite() per salvare un'immagine. Questa funzione richiede due parametri: un nome per salvare l'immagine e l'immagine che si desidera salvare.

importa cv2
immagine = cv2.imread('identificare.jpg', -1)
cv2.imwrite('save_image.png', immagine)

Cattura video dalla webcam

Per acquisire video, iniziamo inizializzando il cv2.Funzione VideoCapture(). Usiamo quindi un ciclo "while" per continuare a catturare il video. Mentre l'utente non preme il tasto exit, possiamo leggere i frame e mostrarli usando read() e cv2.funzione imshow(). Inseriamo quindi un tasto "break" per uscire dal ciclo; in questo caso il numero 27 è il tasto ESC. Se l'utente preme il tasto ESC, escono dal ciclo. Una volta fuori dal giro, è necessario rilasciare la cattura.

importa numpy come np
importa cv2
cattura = cv2.Acquisizione video(0)
mentre (vero):
ret, frame = cattura.leggere()
cv2.imshow('cornice', cornice)
se cv2.waitKey(1) & 0xFF == 27:
rompere
catturare.pubblicazione()
cv2.distruggereTutteWindows()

Riproduzione di un file video

Riprodurre un file video è come catturare un video da una webcam. Per fare ciò, il cv2.Viene utilizzata la funzione VideoCapture(); il nome del file video che si desidera riprodurre viene quindi aggiunto alla funzione. Il ciclo "while" viene utilizzato di nuovo e il tasto di uscita, in questo caso, è il tasto "s" sulla tastiera. Questo aprirà e riprodurrà il file video e lo chiuderà quando l'utente preme il tasto "s".

importa numpy come np
importa cv2
cattura = cv2.VideoCapture("Megamind.avi")
mentre (vero):
ret, frame = cattura.leggere()
cv2.imshow('cornice', cornice)
se cv2.waitKey(1) & 0xFF == ord("s"):
rompere
catturare.pubblicazione()
cv2.distruggereTutteWindows()

Salvataggio di un file video

Il salvataggio di un file video richiede un po' più di lavoro. Il CV2.La funzione VideoWriter() richiede 4 parametri in totale: il nome del file di output, il codice FourCC, il numero di fotogrammi al secondo e la dimensione del fotogramma. Inoltre, è necessario specificare il codice FourCC, che è il codec video che utilizza il cv2.Funzione VideoWriter_fourcc(). Usando la cattura.isOpened(), leggiamo il frame e scriviamo il frame di output. Possiamo anche mostrare i frame usando il cv2.funzione imshow(). Quindi, usiamo cv2.waitKey(1) & 0xFF == ord('s') per impostare una chiave di uscita. In questo caso, se l'utente preme il tasto "s", uscirà dal ciclo e poi rilascerà la cattura e l'uscita e chiuderà le finestre.

importa numpy come np
importa cv2
cattura = cv2.Acquisizione video(0)
fourcc = cv2.VideoWriter_fourcc(*'XVID')
uscita = cv2.VideoWriter('uscita.avi',fourcc, 30.0, (640,480))
mentre (cattura).è aperto()):
ret, frame = cattura.leggere()
produzione.scrivere (cornice)
cv2.imshow('frame',frame)
se cv2.waitKey(1) & 0xFF == ord('s'):
rompere
catturare.pubblicazione()
produzione.pubblicazione()
cv2.distruggereTutteWindows()

Disegnare linee, cerchi, rettangoli e testi

La prima cosa che impareremo a disegnare è una linea. Per tracciare una linea, usiamo semplicemente il cv2.funzione linea(). La funzione accetta 5 argomenti: il video sorgente, il punto iniziale, il punto finale, il colore e lo spessore della linea. Nel seguente caso abbiamo deciso di disegnare un bordo rettangolare (composto da 4 linee):

importa cv2
cattura = cv2.VideoCapture('vtest.avi')
mentre vero:
ret, frame = cattura.leggere()
larghezza = int(cattura.ottenere (3))
altezza = int(cattura.ottenere(4))
riga1 = cv2.linea(cornice, (0,0), (0,altezza), (255, 255, 255),10)
riga2 = cv2.riga(riga1, (0, 0), (larghezza,0), (255, 255, 255), 10)
riga3 = cv2.riga(linea2, (0,altezza), (larghezza, altezza), (255, 255, 255), 10)
riga4 = cv2.line(line3, (larghezza, 0), (larghezza, altezza), (255, 255, 255), 10)
cv2.imshow('cornice', riga4)
se cv2.waitKey(40) == ord('q'):
rompere
catturare.pubblicazione()
cv2.distruggereTutteWindows()

Successivamente, disegneremo sia un cerchio che un rettangolo sul video. Per disegnare un rettangolo, usiamo il cv2.funzione rettangolo(), che accetta 5 argomenti in modo molto simile alla linea. Per disegnare un cerchio, usiamo la funzione cv2.circle(), che accetta anche 5 argomenti: il video sorgente, il punto centrale, il raggio, il colore e lo spessore.

importa cv2
cattura = cv2.VideoCapture('vtest.avi')
mentre vero:
ret, frame = cattura.leggere()
larghezza = int(cattura.ottenere (3))
altezza = int(cattura.ottenere(4))
rettangolo = cv2.rettangolo (cornice, (150, 15), (650, 550), (0,0,0), 11)
cv2.cerchio (rettangolo, (250, 250), 60, (0,0,0), 11)
cv2.imshow('cornice', cornice)
se cv2.waitKey(40) == ord('q'):
rompere
catturare.pubblicazione()
cv2.distruggereTutteWindows()

Ora aggiungiamo del testo al video che abbiamo. Per fare ciò, dobbiamo specificare un carattere; qui abbiamo scelto cv2.FONT_HERSHEY_SIMPLEX. Una volta selezionato il carattere, possiamo utilizzare la funzione cv2.putText() per fare il resto. Cv2.putText() accetta 8 argomenti: il video sorgente, il testo che desideri scrivere, la posizione in cui lo desideri, il carattere, l'ingrandimento, il colore, lo spessore e cv2.LINE_AA (che fa sembrare tutto migliore).

importa cv2
cattura = cv2.VideoCapture('vtest.avi')
mentre vero:
ret, frame = cattura.leggere()
larghezza = int(cattura.ottenere (3))
altezza = int(cattura.ottenere(4))
carattere = cv2.FONT_HERSHEY_SIMPLEX
immagine = cv2.putText(frame, "VTEST.AVI", (200, 200), carattere, 4, (0,0,0), 5, cv2.LINE_AA)
cv2.imshow('cornice', immagine)
se cv2.waitKey(40) == ord('q'):
rompere
catturare.pubblicazione()
cv2.distruggereTutteWindows()

OpenCV è capace di molte grandi cose in cui si deve iniziare da qualche parte. Potrebbe essere imparare a creare e salvare immagini e video. In questo tutorial, abbiamo imparato a fare le basi della visione artificiale.

Codifica felice!

Come modificare il puntatore del mouse e le dimensioni, il colore e lo schema del cursore su Windows 10
Il puntatore del mouse e il cursore in Windows 10 sono aspetti molto importanti del sistema operativo. Questo si può dire anche per altri sistemi oper...
Motori di gioco gratuiti e open source per lo sviluppo di giochi Linux
Questo articolo tratterà un elenco di motori di gioco gratuiti e open source che possono essere utilizzati per lo sviluppo di giochi 2D e 3D su Linux....
Tutorial Shadow of the Tomb Raider per Linux
Shadow of the Tomb Raider è la dodicesima aggiunta alla serie Tomb Raider, un franchise di giochi d'azione e avventura creato da Eidos Montreal. Il gi...