Visione artificiale le basi

Visione artificiale le basi
OpenCV (Open Source Computer Vision Library) è un modulo Python utilizzato per la visione del computer. OpenCV è un modulo gratuito e open source che contiene centinaia di algoritmi per svolgere varie attività. Qualsiasi cosa, dal riconoscimento del viso al rilevamento del movimento, può essere eseguita usando 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. Leggere un file di immagine, inserendo il percorso completo al file o il nome del file (se il file è nella cartella Python) e l'aggiunta di un flag viene eseguita utilizzando CV2.imread (). Il flag può prendere il valore di 1 (per un'immagine a colori), 0 (per scala di grigi) o -1 (per l'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 della tastiera; A 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 fino a quando non la chiudi:

Importa CV2
Immagine = Cv2.Imread ('Linuxlogo.jpg ', 1)
Cv2.imshow ('immagine', immagine)
Cv2.WaitKey (0)
Cv2.DestroyAllWindows ()

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 ('Identifica.jpg ', -1)
Cv2.imwrite ('save_image.png ', immagine)

Acquisisci video dalla webcam

Per catturare video, iniziamo inizializzando il CV2.Funzione videocapture (). Quindi usiamo un ciclo "mentre" per continuare a catturare il video. Sebbene l'utente non premi il tasto di uscita, possiamo leggere i frame e mostrarli utilizzando Read () e CV2.funzione imshow (). Abbiamo quindi inserito una chiave di "pausa" per uscire dal ciclo; In questo caso, il numero 27 è la chiave ESC. Se l'utente preme il tasto ESC, si interrompe dal loop. Una volta fuori dal ciclo, è necessario rilasciare la cattura.

Importa Numpy come NP
Importa CV2
Capture = CV2.VideOCapture (0)
mentre (vero):
ret, frame = cattura.Leggere()
Cv2.imshow ('frame', frame)
Se Cv2.WaitKey (1) e 0xFF == 27:
rottura
catturare.pubblicazione()
Cv2.DestroyAllWindows ()

Riprodurre un file video

Riprodurre un file video è come catturare un video da una webcam. Per fare questo, il CV2.Viene utilizzato 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 chiude quando l'utente preme il tasto "s".

Importa Numpy come NP
Importa CV2
Capture = CV2.Videocapt ("megamind.avi ")
mentre (vero):
ret, frame = cattura.Leggere()
Cv2.imshow ('frame', frame)
Se Cv2.waitkey (1) e 0xff == ord ("s"):
rottura
catturare.pubblicazione()
Cv2.DestroyAllWindows ()

Salvare un file video

Salvare un file video richiede un po 'più di lavoro. Il CV2.La funzione VideoWriter () prende 4 parametri in totale: il nome del file di output, il codice quattrocc, il numero di frame al secondo e la dimensione del frame. Inoltre, si deve specificare il codice quattrocc, che è il codec video utilizzando 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) e 0xff == ord ('s') per impostare un tasto di uscita. In questo caso, se l'utente preme il tasto "S", uscirà dal ciclo e quindi rilascerà l'acquisizione e l'uscita e chiude la Windows.

Importa Numpy come NP
Importa CV2
Capture = CV2.VideOCapture (0)
quattrocc = cv2.Videowriter_Fourcc (*'xvid')
output = cv2.VideOwriter ('output.avi ', quattrocc, 30.0, (640.480))
mentre (cattura.è aperto()):
ret, frame = cattura.Leggere()
produzione.Scrivi (frame)
Cv2.imshow ('frame', frame)
Se Cv2.waitkey (1) e 0xff == ord ('s'):
rottura
catturare.pubblicazione()
produzione.pubblicazione()
Cv2.DestroyAllWindows ()

Linee di disegno, cerchi, rettangoli e testi

La prima cosa che impareremo a disegnare è una linea. Per disegnare una linea, usiamo semplicemente il CV2.funzione line (). La funzione prende 5 argomenti: il video di origine, il punto di partenza, il punto finale, il colore e lo spessore della linea. Nel caso seguente, abbiamo deciso di disegnare un bordo rettangolare (composto da 4 righe):

Importa CV2
Capture = CV2.Videocapt ('vtest.avi ')
mentre è vero:
ret, frame = cattura.Leggere()
larghezza = int (cattura.get (3))
altezza = int (cattura.get (4))
Line1 = CV2.linea (frame, (0,0), (0, altezza), (255, 255, 255), 10)
line2 = cv2.linea (line1, (0, 0), (larghezza, 0), (255, 255, 255), 10)
riga3 = cv2.linea (line2, (0, altezza), (larghezza, altezza), (255, 255, 255), 10)
line4 = cv2.linea (line3, (larghezza, 0), (larghezza, altezza), (255, 255, 255), 10)
Cv2.imshow ('frame', line4)
Se Cv2.WaitKey (40) == Ord ('Q'):
rottura
catturare.pubblicazione()
Cv2.DestroyAllWindows ()

Successivamente, disegneremo sia un cerchio che un rettangolo nel video. Per disegnare un rettangolo, usiamo il CV2.funzione rettangolo (), che richiede 5 argomenti molto simili alla linea. Per disegnare un cerchio, utilizziamo la funzione CV2.Circle (), che prende anche 5 argomenti: il video di origine, il punto centrale, il raggio, il colore e lo spessore.

Importa CV2
Capture = CV2.Videocapt ('vtest.avi ')
mentre è vero:
ret, frame = cattura.Leggere()
larghezza = int (cattura.get (3))
altezza = int (cattura.get (4))
Rettangolo = CV2.Rettangolo (frame, (150, 15), (650, 550), (0,0,0), 11)
Cv2.Cerchio (rettangolo, (250, 250), 60, (0,0,0), 11)
Cv2.imshow ('frame', frame)
Se Cv2.WaitKey (40) == Ord ('Q'):
rottura
catturare.pubblicazione()
Cv2.DestroyAllWindows ()

Ora, aggiungiamo un po 'di 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 () prende 8 argomenti: il video di origine, il testo che desideri scrivere, la posizione in cui lo desideri, il carattere, l'ingrandimento, il colore, lo spessore e CV2.Line_aa (che rende tutto migliore).

Importa CV2
Capture = CV2.Videocapt ('vtest.avi ')
mentre è vero:
ret, frame = cattura.Leggere()
larghezza = int (cattura.get (3))
altezza = int (cattura.get (4))
FONT = CV2.Font_hershey_simplex
Immagine = Cv2.putText (frame, "vtest.Avi ", (200, 200), carattere, 4, (0,0,0), 5, CV2.Line_aa)
Cv2.imshow ('frame', immagine)
Se Cv2.WaitKey (40) == Ord ('Q'):
rottura
catturare.pubblicazione()
Cv2.DestroyAllWindows ()

OpenCV è in grado di molte cose fantastiche in cui si devono 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.

Codice felice!