opencv

Viziune computerizată Bazele

Viziune computerizată Bazele
Opencv (Open Source Computer Vision Library) este un modul Python utilizat pentru viziunea computerizată. OpenCV este un modul open-source gratuit care conține sute de algoritmi pentru a efectua diverse sarcini. Orice, de la recunoașterea feței până la detectarea mișcării, se poate face folosind OpenCV. Cu toate acestea, în acest ghid, vom analiza elementele de bază ale OpenCV.

Mai întâi, să instalăm OpenCV:

pip3 instalează opencv-python

Citiț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 cv2
imagine = 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 cv2
imagine = 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 np
import 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 np
import 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 np
import 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 cv2
capture = 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 cv2
capture = 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 cv2
capture = 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ă!

Cum se instalează League Of Legends pe Ubuntu 14.04
Dacă ești fan al League of Legends, atunci aceasta este o oportunitate pentru tine de a testa rula League of Legends. Rețineți că LOL este acceptat pe...
Instalați cel mai recent joc de strategie OpenRA pe Ubuntu Linux
OpenRA este un motor de jocuri de strategie în timp real Libre / Free care recreează primele jocuri Westwood, cum ar fi clasicul Command & Conquer: Re...
Instalați cel mai recent Dolphin Emulator pentru Gamecube și Wii pe Linux
Emulatorul Dolphin vă permite să jucați jocurile alese de Gamecube și Wii pe computerele personale Linux (PC). Fiind un emulator de joc liber disponi...