Mai întâi, să instalăm OpenCV:
pip3 instalează opencv-pythonCitiți și afișați imagini
Primul lucru pe care trebuie să-l învățăm este să citim și să scriem imagini. Citirea unui fișier imagine, introducerea căii complete către fișier sau numele fișierului (dacă fișierul se află în folderul python) și adăugarea unui steag se face folosind cv2.imread (). Steagul poate lua valoarea 1 (pentru o imagine color), 0 (pentru scala de gri) sau -1 (pentru imaginea color cu canale). Se poate folosi cv2.funcția imshow () pentru a afișa imaginea; aici sunt trecute două argumente - un nume pentru imagine și imaginea de afișat. Apoi, folosim cv2.funcția waitKey () pentru a aștepta o intrare de la tastatură; un 0 pentru cv2.Funcția waitKey (0) implică un timp de așteptare permanent. Pe de altă parte, cv2.Funcția destroyAllWindows () va închide ferestrele.
Aceasta va citi și deschide o imagine și va menține imaginea deschisă până când o închideți:
import cv2imagine = cv2.imread ('LinuxLogo.jpg ', 1)
cv2.imshow („imagine”, imagine)
cv2.waitKey (0)
cv2.destroyAllWindows ()
Scrieți imagini
Folosim cv2.funcția imwrite () pentru a salva o imagine. Această funcție are doi parametri - un nume pentru salvarea imaginii și imaginea pe care doriți să o salvați.
import cv2imagine = cv2.imread ('identifica.jpg ', -1)
cv2.imwrite ('salvare_imagine.png ', imagine)
Captură video de pe camera web
Pentru a captura videoclipuri, începem cu inițializarea cv2.Funcția VideoCapture (). Apoi folosim o buclă „while” pentru a continua să capturăm videoclipul. În timp ce utilizatorul nu apasă tasta de ieșire, putem citi cadrele și le putem arăta folosind read () și cv2.funcția imshow (). Apoi punem o tastă „break” pentru a ieși din buclă; în acest caz, numărul 27 este cheia ESC. Dacă utilizatorul apasă tasta ESC, se desprinde din buclă. Odată ieșit din buclă, este necesar să eliberați captura.
import numpy ca npimport cv2
capture = cv2.VideoCapture (0)
în timp ce (Adevărat):
ret, frame = capture.citit()
cv2.imshow („cadru”, cadru)
dacă cv2.waitKey (1) & 0xFF == 27:
pauză
captură.eliberare()
cv2.destroyAllWindows ()
Redarea unui fișier video
Redarea unui fișier video este ca și cum ai captura un videoclip de pe o cameră web. Pentru a face acest lucru, cv2.Se folosește funcția VideoCapture (); numele fișierului video pe care doriți să îl redați este apoi adăugat funcției. Bucla „while” este utilizată din nou, iar tasta de ieșire, în acest caz, este tasta „s” de pe tastatură. Aceasta va deschide și reda fișierul video și îl va închide atunci când utilizatorul apasă tasta „s”.
import numpy ca npimport cv2
capture = cv2.VideoCapture ("Megamind.avi ")
în timp ce (Adevărat):
ret, frame = capture.citit()
cv2.imshow („cadru”, cadru)
dacă cv2.waitKey (1) & 0xFF == ord ("s"):
pauză
captură.eliberare()
cv2.destroyAllWindows ()
Salvarea unui fișier video
Salvarea unui fișier video necesită ceva mai multă muncă. Cv2.Funcția VideoWriter () ia 4 parametri în total - numele fișierului de ieșire, codul FourCC, numărul de cadre pe secundă și dimensiunea cadrului. Mai mult, trebuie specificat codul FourCC, care este codecul video care utilizează cv2.Funcția VideoWriter_fourcc (). Folosind captura.isOpened (), citim cadrul și scriem cadrul de ieșire. Putem afișa și cadrele folosind cv2.funcția imshow (). Apoi, folosim cv2.waitKey (1) & 0xFF == ord ('s') pentru a seta o cheie de ieșire. În acest caz, dacă utilizatorul apasă tasta „s”, va ieși din buclă și apoi va elibera captura și ieșirea și va închide ferestrele.
import numpy ca npimport cv2
capture = cv2.VideoCapture (0)
fourcc = cv2.VideoWriter_fourcc (* 'XVID')
ieșire = cv2.VideoWriter ('ieșire.avi ', fourcc, 30.0, (640.480))
în timp ce (captură.este deschis()):
ret, frame = capture.citit()
ieșire.scrie (cadru)
cv2.imshow („cadru”, cadru)
dacă cv2.waitKey (1) & 0xFF == ord ('s'):
pauză
captură.eliberare()
ieșire.eliberare()
cv2.destroyAllWindows ()
Desenarea de linii, cercuri, dreptunghiuri și texte
Primul lucru pe care îl vom învăța să desenăm este o linie. Pentru a desena o linie, folosim pur și simplu cv2.funcția line (). Funcția acceptă 5 argumente - videoclipul sursă, punctul de plecare, punctul final, culoarea și grosimea liniei. În următorul caz, am decis să trasăm o margine dreptunghiulară (formată din 4 linii):
import cv2capture = cv2.VideoCapture ('vtest.avi ')
în timp ce este adevărat:
ret, frame = capture.citit()
width = int (capture.obține (3))
înălțime = int (capture.obține (4))
linia1 = cv2.linie (cadru, (0,0), (0, înălțime), (255, 255, 255), 10)
linia2 = cv2.linie (linie1, (0, 0), (lățime, 0), (255, 255, 255), 10)
linia3 = cv2.linie (linie2, (0, înălțime), (lățime, înălțime), (255, 255, 255), 10)
linia4 = cv2.linie (linie3, (lățime, 0), (lățime, înălțime), (255, 255, 255), 10)
cv2.imshow („cadru”, linia 4)
dacă cv2.waitKey (40) == ord ('q'):
pauză
captură.eliberare()
cv2.destroyAllWindows ()
Apoi, vom desena atât un cerc cât și un dreptunghi pe videoclip. Pentru a desena un dreptunghi, folosim cv2.funcția rectangle (), care ia 5 argumente la fel ca linia. Pentru a desena un cerc, folosim funcția cv2.circle (), care ia și 5 argumente - videoclipul sursă, punctul central, raza, culoarea și grosimea.
import cv2capture = cv2.VideoCapture ('vtest.avi ')
în timp ce este adevărat:
ret, frame = capture.citit()
width = int (capture.obține (3))
înălțime = int (capture.obține (4))
dreptunghi = cv2.dreptunghi (cadru, (150, 15), (650, 550), (0,0,0), 11)
cv2.cerc (dreptunghi, (250, 250), 60, (0,0,0), 11)
cv2.imshow („cadru”, cadru)
dacă cv2.waitKey (40) == ord ('q'):
pauză
captură.eliberare()
cv2.destroyAllWindows ()
Acum, să adăugăm un text la videoclipul pe care îl avem. Pentru a face acest lucru, trebuie să specificăm un font; aici, am ales cv2.FONT_HERSHEY_SIMPLEX. Odată selectat fontul, putem folosi funcția cv2.putText () pentru a face restul. Cv2.putText () ia 8 argumente - sursa video, textul pe care doriți să-l scrieți, poziția în care doriți, fontul, mărirea, culoarea, grosimea și cv2.LINE_AA (ceea ce face ca totul să arate mai bine).
import cv2capture = cv2.VideoCapture ('vtest.avi ')
în timp ce este adevărat:
ret, frame = capture.citit()
width = int (capture.obține (3))
înălțime = int (capture.obține (4))
font = cv2.FONT_HERSHEY_SIMPLEX
imagine = cv2.putText (cadru, "VTEST.AVI ", (200, 200), font, 4, (0,0,0), 5, cv2.LINE_AA)
cv2.imshow („cadru”, imagine)
dacă cv2.waitKey (40) == ord ('q'):
pauză
captură.eliberare()
cv2.destroyAllWindows ()
OpenCV este capabil de multe lucruri grozave în care trebuie să începi undeva. S-ar putea învăța să creați și să salvați imagini și videoclipuri. În acest tutorial, am învățat să realizăm elementele de bază ale viziunii computerizate.
Codificare fericită!