Najprej namestimo OpenCV:
pip3 namestite opencv-pythonBranje in prikaz slik
Prva stvar, ki se je moramo naučiti, je branje in pisanje slik. Branje slikovne datoteke, vnos celotne poti do datoteke ali imena datoteke (če je datoteka v mapi python) in dodajanje zastavice se izvede s pomočjo cv2.neprebrano (). Zastavica ima lahko vrednost 1 (za barvno sliko), 0 (za sivine) ali -1 (za barvno sliko s kanali). Uporabimo lahko cv2.funkcija imshow () za prikaz slike; tu sta podana dva argumenta - ime slike in slika, ki jo je treba prikazati. Nato uporabimo cv2.funkcija waitKey () za čakanje na vnos s tipkovnice; a 0 za cv2.funkcija waitKey (0) pomeni trajni čakalni čas. Po drugi strani pa cv2.Uničite vseWindows () funkcija bo zaprla okna.
To bo prebralo in odprlo sliko ter jo imelo odprto, dokler je ne zaprete:
uvoz cv2slika = cv2.imread ('LinuxLogo.jpg ', 1)
cv2.imshow ('slika', slika)
cv2.waitKey (0)
cv2.uniči vse Windows ()
Napišite slike
Uporabljamo cv2.imwrite () za shranjevanje slike. Ta funkcija ima dva parametra - ime za shranjevanje slike in sliko, ki jo želite shraniti.
uvoz cv2slika = cv2.imread ('prepoznati.jpg ', -1)
cv2.imwrite ('shrani_sliko.png ', slika)
Zajemite video s spletne kamere
Za zajem video posnetkov začnemo z inicializacijo cv2.Funkcija VideoCapture (). Nato za nadaljevanje snemanja videoposnetka uporabimo zanko »while«. Medtem ko uporabnik ne pritisne tipke za izhod, lahko okvire preberemo in prikažemo z uporabo read () in cv2.funkcija imshow (). Nato vstavimo tipko "break" za izhod iz zanke; v tem primeru je številka 27 ESC ključ. Če uporabnik pritisne tipko ESC, ta preide iz zanke. Ko izstopite iz zanke, morate sprostiti zajem.
uvozi numpy kot npuvoz cv2
zajem = cv2.VideoCapture (0)
while (True):
ret, frame = zajem.preberi ()
cv2.imshow ('okvir', okvir)
če je cv2.waitKey (1) & 0xFF == 27:
odmor
zajemanje.sprosti ()
cv2.uniči vse Windows ()
Predvajanje video datoteke
Predvajanje video datoteke je kot snemanje videoposnetka s spletne kamere. Za to uporabite cv2.Uporabljena je funkcija VideoCapture (); nato se funkciji doda ime video datoteke, ki jo želite predvajati. Znova se uporabi zanka »while«, v tem primeru pa je tipka za izhod tipka »s« na tipkovnici. To bo odprlo in predvajalo video datoteko in jo zaprlo, ko uporabnik pritisne tipko “s”.
uvozi numpy kot npuvoz cv2
zajem = cv2.VideoCapture ("Megamind.avi ")
while (True):
ret, frame = zajem.preberi ()
cv2.imshow ('okvir', okvir)
če je cv2.waitKey (1) & 0xFF == ord ("s"):
odmor
zajemanje.sprostitev ()
cv2.uniči vse Windows ()
Shranjevanje video datoteke
Shranjevanje video datoteke zahteva nekaj več dela. Cv2.Funkcija VideoWriter () ima skupno 4 parametre - ime izhodne datoteke, kodo FourCC, število sličic na sekundo in velikost okvirja. Poleg tega je treba določiti kodo FourCC, ki je video kodek z uporabo cv2.Funkcija VideoWriter_fourcc (). Uporaba zajema.isOpened (), preberemo okvir in zapišemo izhodni okvir. Okvire lahko prikažemo tudi s pomočjo cv2.funkcija imshow (). Nato uporabimo cv2.waitKey (1) & 0xFF == ord ('s') za nastavitev izhodne tipke. V tem primeru, če uporabnik pritisne tipko “s”, bo zapustil zanko in nato sprostil zajem in izhod ter zaprl okna.
uvozi numpy kot npuvoz cv2
zajem = cv2.VideoCapture (0)
fourcc = cv2.VideoWriter_fourcc (* 'XVID')
izhod = cv2.VideoWriter ('izhod.avi ', štiri kubične plošče, 30.0, (640.480))
medtem ko (zajem.isOpened ()):
ret, frame = zajem.preberi ()
izhod.pisanje (okvir)
cv2.imshow ('okvir', okvir)
če je cv2.waitKey (1) & 0xFF == ord ('s'):
odmor
zajemanje.sprostitev ()
izhod.sprosti ()
cv2.uniči vse Windows ()
Risanje črt, krogov, pravokotnikov in besedil
Prva stvar, ki se jo bomo naučili risati, je črta. Za risanje črte preprosto uporabimo cv2.funkcija line (). Funkcija zajema 5 argumentov - izvorni video, začetno točko, končno točko, barvo in debelino črte. V naslednjem primeru smo se odločili, da narišemo pravokotno obrobo (sestavljeno iz 4 vrstic):
uvoz cv2zajem = cv2.VideoCapture ('vtest.avi ')
medtem ko je True:
ret, frame = zajem.preberi ()
širina = int (zajem.dobili (3))
višina = int (zajem.dobite (4))
vrstica1 = cv2.črta (okvir, (0,0), (0, višina), (255, 255, 255), 10)
vrstica2 = cv2.vrstica (vrstica1, (0, 0), (širina, 0), (255, 255, 255), 10)
vrstica3 = cv2.vrstica (vrstica2, (0, višina), (širina, višina), (255, 255, 255), 10)
vrstica4 = cv2.vrstica (vrstica3, (širina, 0), (širina, višina), (255, 255, 255), 10)
cv2.imshow ('okvir', vrstica4)
če je cv2.waitKey (40) == ord ('q'):
odmor
zajemanje.sprostitev ()
cv2.uniči vse Windows ()
Nato bomo na video posnetek narisali krog in pravokotnik. Za risanje pravokotnika uporabimo cv2.funkcijo rectangle (), ki zajema 5 argumentov, podobno kot vrstica. Za risanje kroga uporabimo funkcijo cv2.circle (), ki zajema tudi 5 argumentov - izvorni video, središčno točko, polmer, barvo in debelino.
uvoz cv2zajem = cv2.VideoCapture ('vtest.avi ')
medtem ko je True:
ret, frame = zajem.preberi ()
širina = int (zajem.dobili (3))
višina = int (zajem.dobite (4))
pravokotnik = cv2.pravokotnik (okvir, (150, 15), (650, 550), (0,0,0), 11)
cv2.krog (pravokotnik, (250, 250), 60, (0,0,0), 11)
cv2.imshow ('okvir', okvir)
če je cv2.waitKey (40) == ord ('q'):
odmor
zajemanje.sprosti ()
cv2.uniči vse Windows ()
Zdaj pa dodajte nekaj besedila v video, ki ga imamo. Za to moramo določiti pisavo; tukaj smo izbrali cv2.FONT_HERSHEY_SIMPLEX. Ko je pisava izbrana, lahko uporabimo funkcijo cv2.putText (), da naredite ostalo. Cv2.putText () ima 8 argumentov - izvorni video, besedilo, ki ga želite napisati, položaj, kjer ga želite, pisava, povečava, barva, debelina in cv2.LINE_AA (zaradi česar je vse videti bolje).
uvoz cv2zajem = cv2.VideoCapture ('vtest.avi ')
medtem ko je True:
ret, frame = zajem.preberi ()
širina = int (zajem.dobili (3))
višina = int (zajem.dobite (4))
pisava = cv2.FONT_HERSHEY_SIMPLEX
slika = cv2.putText (okvir, "VTEST.AVI ", (200, 200), pisava, 4, (0,0,0), 5, cv2.LINE_AA)
cv2.imshow ('okvir', slika)
če je cv2.waitKey (40) == ord ('q'):
odmor
zajemanje.sprostitev ()
cv2.uniči vse Windows ()
OpenCV je sposoben mnogih velikih stvari, pri katerih je nekje treba začeti. Lahko bi se učili ustvarjati in shranjevati slike in video posnetke. V tej vadnici smo se naučili samih osnov računalniškega vida.
Srečno kodiranje!