La oss først installere OpenCV:
pip3 installer opencv-pythonLes og vis bilder
Det første vi trenger å lære er å lese og skrive bilder. Å lese en bildefil, legge inn hele banen til filen eller filnavnet (hvis filen er i pythonmappen) og legge til et flagg gjøres ved hjelp av cv2.imread (). Flagget kan ta verdien 1 (for et fargebilde), 0 (for gråtoner) eller -1 (for fargebilde med kanaler). Man kan bruke cv2.imshow () funksjon for å vise bildet; her sendes to argumenter - et navn for bildet og bildet som skal vises. Deretter bruker vi cv2.waitKey () -funksjon for å vente på tastaturinngang; a 0 for cv2.waitKey (0) -funksjonen innebærer en permanent ventetid. På den annen side, cv2.destroyAllWindows () -funksjonen lukker vinduene.
Dette vil lese og åpne et bilde, og holde bildet åpent til du lukker det:
importere cv2bilde = cv2.imread ('LinuxLogo.jpg ', 1)
cv2.imshow ('image', image)
cv2.waitKey (0)
cv2.destroyAllWindows ()
Skriv bilder
Vi bruker cv2.imwrite () -funksjon for å lagre et bilde. Denne funksjonen tar to parametere - et navn for å lagre bildet og bildet du vil lagre.
importere cv2bilde = cv2.imread ('identifiser.jpg ', -1)
cv2.imwrite ('lagre_bilde.png ', bilde)
Ta opp video fra webkamera
For å ta opp videoer begynner vi med å initialisere cv2.VideoCapture () -funksjon. Vi bruker deretter en "while" loop for å fortsette å ta videoen. Mens brukeren ikke trykker på exit-tasten, kan vi lese rammene og vise dem ved å lese () og cv2.imshow () -funksjon. Vi setter deretter inn en "pause" -tast for å gå ut av loop; i dette tilfellet er tallet 27 ESC-nøkkelen. Hvis brukeren trykker på ESC-tasten, bryter de ut fra sløyfen. Når du er ute av løkken, er det nødvendig å frigjøre fangsten.
importer nummen som npimportere cv2
fange = cv2.VideoCapture (0)
mens (True):
ret, ramme = fange.lese()
cv2.imshow ('ramme', ramme)
hvis cv2.waitKey (1) & 0xFF == 27:
gå i stykker
fange.utgivelse()
cv2.destroyAllWindows ()
Spille av en videofil
Å spille av en videofil er som å ta en video fra et webkamera. For å gjøre dette, cv2.VideoCapture () -funksjonen brukes; navnet på videofilen du ønsker å spille blir deretter lagt til i funksjonen. “While” -sløyfen brukes igjen, og exit-tasten, i dette tilfellet, er “s” -tasten på tastaturet. Dette åpner og spiller av videofilen og lukker den når brukeren trykker på “s” -tasten.
importer nummen som npimportere cv2
fange = cv2.VideoCapture ("Megamind.avi ")
mens (True):
ret, ramme = fange.lese()
cv2.imshow ('ramme', ramme)
hvis cv2.waitKey (1) & 0xFF == ord ("s"):
gå i stykker
fange.utgivelse()
cv2.destroyAllWindows ()
Lagre en videofil
Lagring av en videofil krever litt mer arbeid. Cv2.VideoWriter () -funksjonen tar totalt 4 parametere - utdatafilnavnet, FourCC-koden, antall bilder per sekund og rammestørrelsen. Videre må man spesifisere FourCC-koden, som er videokodeken ved hjelp av cv2.VideoWriter_fourcc () -funksjon. Bruke fangsten.isOpened (), vi leser rammen og skriver utskriftsrammen. Vi kan også vise rammene ved hjelp av cv2.imshow () -funksjon. Deretter bruker vi cv2.waitKey (1) & 0xFF == ord ('s') for å stille inn en exit-tast. I dette tilfellet, hvis brukeren trykker på “s” -tasten, vil de gå ut av sløyfen og deretter slippe fangsten og utgangen og lukker vinduene.
importer nummen som npimportere cv2
fange = cv2.VideoCapture (0)
fourcc = cv2.VideoWriter_fourcc (* 'XVID')
utgang = cv2.VideoWriter ('utgang.avi ', fourcc, 30.0, (640,480))
while (fange.isOpened ()):
ret, ramme = fange.lese()
produksjon.skriv (ramme)
cv2.imshow ('ramme', ramme)
hvis cv2.waitKey (1) & 0xFF == ord ('s'):
gå i stykker
fange.utgivelse()
produksjon.utgivelse()
cv2.destroyAllWindows ()
Tegningslinjer, sirkler, rektangler og tekster
Det første vi skal lære å tegne er en linje. For å tegne en linje bruker vi ganske enkelt cv2.line () -funksjon. Funksjonen tar 5 argumenter - kildevideoen, startpunktet, sluttpunktet, fargen og linjens tykkelse. I det følgende tilfellet har vi bestemt oss for å tegne en rektangulær kant (består av 4 linjer):
importere cv2fange = cv2.VideoCapture ('vtest.avi ')
mens det er sant:
ret, ramme = fange.lese()
bredde = int (fange.få (3))
høyde = int (fange.få (4))
linje1 = cv2.linje (ramme, (0,0), (0, høyde), (255, 255, 255), 10)
linje2 = cv2.linje (linje1, (0, 0), (bredde, 0), (255, 255, 255), 10)
linje3 = cv2.linje (linje2, (0, høyde), (bredde, høyde), (255, 255, 255), 10)
linje4 = cv2.linje (linje 3, (bredde, 0), (bredde, høyde), (255, 255, 255), 10)
cv2.imshow ('ramme', linje 4)
hvis cv2.waitKey (40) == ord ('q'):
gå i stykker
fange.utgivelse()
cv2.destroyAllWindows ()
Deretter tegner vi både en sirkel og et rektangel på videoen. For å tegne et rektangel bruker vi cv2.rektangel () -funksjon, som tar 5 argumenter omtrent som linjen. For å tegne en sirkel bruker vi funksjonen cv2.sirkel (), som også tar 5 argumenter - kildevideoen, midtpunktet, radiusen, fargen og tykkelsen.
importere cv2fange = cv2.VideoCapture ('vtest.avi ')
mens det er sant:
ret, ramme = fange.lese()
bredde = int (fange.få (3))
høyde = int (fange.få (4))
rektangel = cv2.rektangel (ramme, (150, 15), (650, 550), (0,0,0), 11)
cv2.sirkel (rektangel, (250, 250), 60, (0,0,0), 11)
cv2.imshow ('ramme', ramme)
hvis cv2.waitKey (40) == ord ('q'):
gå i stykker
fange.utgivelse()
cv2.destroyAllWindows ()
La oss nå legge til litt tekst i videoen vi har. For å gjøre dette må vi spesifisere en skrift; her valgte vi cv2.FONT_HERSHEY_SIMPLEX. Når skriften er valgt, kan vi bruke funksjonen cv2.putText () for å gjøre resten. Cv2.putText () tar 8 argumenter - kildevideoen, teksten du vil skrive, posisjonen der du vil ha den, fonten, forstørrelsen, fargen, tykkelsen og cv2.LINE_AA (som gjør at alt ser bedre ut).
importere cv2fange = cv2.VideoCapture ('vtest.avi ')
mens det er sant:
ret, ramme = fange.lese()
bredde = int (fange.få (3))
høyde = int (fange.få (4))
font = cv2.FONT_HERSHEY_SIMPLEX
bilde = cv2.putText (ramme, "VTEST.AVI ", (200, 200), font, 4, (0,0,0), 5, cv2.LINE_AA)
cv2.imshow ('ramme', bilde)
hvis cv2.waitKey (40) == ord ('q'):
gå i stykker
fange.utgivelse()
cv2.destroyAllWindows ()
OpenCV er i stand til mange flotte ting der man må begynne et sted. Det kan være å lære å lage og lagre bilder og videoer. I denne opplæringen lærte vi å gjøre det grunnleggende om datasyn.
Glad koding!