Innanzitutto, installiamo OpenCV:
pip3 installa opencv-pythonLeggi 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 cv2immagine = 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 cv2immagine = 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 npimporta 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 npimporta 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 npimporta 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 cv2cattura = 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 cv2cattura = 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 cv2cattura = 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!