Prvo, instalirajmo OpenCV:
pip3 instalirati opencv-pythonČitajte i prikazujte slike
Prvo što moramo naučiti je čitanje i pisanje slika. Čitanje slikovne datoteke, unos pune staze do datoteke ili imena datoteke (ako je datoteka u mapi python) i dodavanje zastavice vrši se pomoću cv2.nepročitano (). Zastavica može imati vrijednost 1 (za sliku u boji), 0 (za sive tonove) ili -1 (za sliku u boji s kanalima). Može se koristiti cv2.funkcija imshow () za prikaz slike; ovdje se prosljeđuju dva argumenta - naziv slike i slika koju treba prikazati. Dalje koristimo cv2.funkcija waitKey () za čekanje unosa s tipkovnice; a 0 za cv2.funkcija waitKey (0) podrazumijeva trajno vrijeme čekanja. S druge strane, cv2.unisellAllWindows () funkcija će zatvoriti prozore.
Ovo će očitati i otvoriti sliku i zadržati je otvorenom dok je ne zatvorite:
uvoz cv2slika = cv2.imread ('LinuxLogo.jpg ', 1)
cv2.imshow ('slika', slika)
cv2.waitKey (0)
cv2.uništitiAllWindows ()
Napišite slike
Koristimo cv2.funkcija imwrite () za spremanje slike. Ova funkcija uzima dva parametra - naziv za spremanje slike i sliku koju želite spremiti.
uvoz cv2slika = cv2.imread ('identificirati.jpg ', -1)
cv2.imwrite ('spremi_sliku.png ', slika)
Snimite video s web kamere
Za snimanje videozapisa započinjemo inicijalizacijom cv2.Funkcija VideoCapture (). Zatim koristimo petlju "while" za nastavak snimanja videozapisa. Iako korisnik ne pritisne tipku za izlaz, okvire možemo čitati i prikazivati pomoću read () i cv2.funkcija imshow (). Zatim stavimo tipku "break" za izlaz iz petlje; u ovom je slučaju broj 27 ESC ključ. Ako korisnik pritisne ESC tipku, oni izbijaju iz petlje. Kad izađete iz petlje, potrebno je otpustiti hvatanje.
uvoz numpy kao npuvoz cv2
hvatanje = cv2.VideoCapture (0)
while (True):
ret, frame = hvatanje.čitati()
cv2.imshow ('okvir', okvir)
ako je cv2.waitKey (1) & 0xFF == 27:
pauza
uhvatiti.otpustiti ()
cv2.uništitiAllWindows ()
Reprodukcija video datoteke
Reprodukcija video datoteke je poput snimanja videozapisa s web kamere. Da biste to učinili, cv2.Koristi se funkcija VideoCapture (); tada se funkciji dodaje naziv video datoteke koju želite reproducirati. Ponovno se koristi petlja „while“, a tipka za izlaz u ovom je slučaju tipka „s“ na tipkovnici. Ovo će otvoriti i reproducirati video datoteku i zatvoriti je kada korisnik pritisne tipku "s".
uvoz numpy kao npuvoz cv2
hvatanje = cv2.VideoCapture ("Megamind.avi ")
while (True):
ret, frame = hvatanje.čitati()
cv2.imshow ('okvir', okvir)
ako je cv2.waitKey (1) & 0xFF == ord ("s"):
pauza
uhvatiti.otpustiti ()
cv2.uništitiAllWindows ()
Spremanje video datoteke
Spremanje video datoteke zahtijeva malo više posla. Cv2.Funkcija VideoWriter () uzima ukupno 4 parametra - naziv izlazne datoteke, FourCC kôd, broj sličica u sekundi i veličinu okvira. Nadalje, mora se navesti FourCC kod, koji je video kodek koji koristi cv2.Funkcija VideoWriter_fourcc (). Koristeći hvatanje.isOpened (), čitamo okvir i zapisujemo izlazni okvir. Okvire možemo prikazati i pomoću cv2.funkcija imshow (). Zatim koristimo cv2.waitKey (1) & 0xFF == ord ('s') za postavljanje izlazne tipke. U ovom slučaju, ako korisnik pritisne tipku “s”, izaći će iz petlje, a zatim otpustiti hvatanje i izlaz te zatvoriti prozore.
uvoz numpy kao npuvoz cv2
hvatanje = cv2.VideoCapture (0)
fourcc = cv2.VideoWriter_fourcc (* 'XVID')
izlaz = cv2.VideoWriter ('izlaz.avi ', četiri kubika, 30.0, (640.480))
dok (hvatanje.isOpened ()):
ret, frame = hvatanje.čitati()
izlaz.zapis (okvir)
cv2.imshow ('okvir', okvir)
ako je cv2.waitKey (1) & 0xFF == ord ('s'):
pauza
uhvatiti.otpustiti ()
izlaz.otpustiti ()
cv2.uništitiAllWindows ()
Crtanje linija, krugova, pravokutnika i tekstova
Prvo što ćemo naučiti crtati je crta. Za crtanje crte jednostavno koristimo cv2.linija () funkcija. Funkcija uzima 5 argumenata - izvorni video, početnu točku, završnu točku, boju i debljinu linije. U sljedećem smo slučaju odlučili nacrtati pravokutni obrub (sastavljen od 4 linije):
uvoz cv2hvatanje = cv2.VideoCapture ('vtest.avi ')
dok je Istina:
ret, frame = hvatanje.čitati()
širina = int (hvatanje.dobiti (3))
visina = int (hvatanje.dobiti (4))
linija1 = cv2.crta (okvir, (0,0), (0, visina), (255, 255, 255), 10)
linija2 = cv2.linija (linija1, (0, 0), (širina, 0), (255, 255, 255), 10)
linija3 = cv2.linija (linija2, (0, visina), (širina, visina), (255, 255, 255), 10)
linija4 = cv2.linija (linija3, (širina, 0), (širina, visina), (255, 255, 255), 10)
cv2.imshow ('okvir', redak4)
ako je cv2.waitKey (40) == ord ('q'):
pauza
uhvatiti.otpustiti ()
cv2.uništitiAllWindows ()
Zatim ćemo na videozapisu nacrtati i krug i pravokutnik. Za crtanje pravokutnika koristimo cv2.pravokutnik () funkcija, koja uzima 5 argumenata slično liniji. Za crtanje kruga koristimo funkciju cv2.circle (), koji također uzima 5 argumenata - izvorni video, središnja točka, radijus, boja i debljina.
uvoz cv2hvatanje = cv2.VideoCapture ('vtest.avi ')
dok je Istina:
ret, frame = hvatanje.čitati()
širina = int (hvatanje.dobiti (3))
visina = int (hvatanje.dobiti (4))
pravokutnik = cv2.pravokutnik (okvir, (150, 15), (650, 550), (0,0,0), 11)
cv2.krug (pravokutnik, (250, 250), 60, (0,0,0), 11)
cv2.imshow ('okvir', okvir)
ako je cv2.waitKey (40) == ord ('q'):
pauza
uhvatiti.otpustiti ()
cv2.uništitiAllWindows ()
Sad, dodajmo malo teksta u video zapis koji imamo. Da bismo to učinili, moramo navesti font; ovdje smo odabrali cv2.FONT_HERSHEY_SIMPLEX. Nakon što odaberemo font, možemo koristiti funkciju cv2.putText () da odradi ostalo. Cv2.putText () uzima 8 argumenata - izvorni videozapis, tekst koji želite napisati, položaj na kojem želite, font, povećanje, boja, debljina i cv2.LINE_AA (zbog čega sve izgleda bolje).
uvoz cv2hvatanje = cv2.VideoCapture ('vtest.avi ')
dok je Istina:
ret, frame = hvatanje.čitati()
širina = int (hvatanje.dobiti (3))
visina = int (hvatanje.dobiti (4))
font = cv2.FONT_HERSHEY_SIMPLEX
slika = cv2.putText (okvir, "VTEST.AVI ", (200, 200), font, 4, (0,0,0), 5, cv2.LINE_AA)
cv2.imshow ('okvir', slika)
ako je cv2.waitKey (40) == ord ('q'):
pauza
uhvatiti.otpustiti ()
cv2.uništitiAllWindows ()
OpenCV je sposoban za mnoge velike stvari u kojima se mora negdje započeti. To bi moglo biti učenje stvaranja i spremanja slika i videozapisa. U ovom uputstvu naučili smo raditi osnove računalnog vida.
Sretno kodiranje!