opencv

Osnove računalniškega vida

Osnove računalniškega vida
Opencv (Open Source Computer Vision Library) je Python modul, ki se uporablja za računalniški vid. OpenCV je brezplačen odprtokodni modul, ki vsebuje na stotine algoritmov za izvajanje različnih nalog. Z uporabo OpenCV lahko storite karkoli, od prepoznavanja obrazov do zaznavanja gibanja. Vendar si bomo v tem priročniku ogledali osnove OpenCV.

Najprej namestimo OpenCV:

pip3 namestite opencv-python

Branje 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 cv2
slika = 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 cv2
slika = 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 np
uvoz 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 np
uvoz 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 np
uvoz 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 cv2
zajem = 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 cv2
zajem = 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 cv2
zajem = 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!

Posnemajte klike miške tako, da v Windows 10 lebdite z miško Clickless Mouse
Uporaba miške ali tipkovnice v napačni drži čezmerne uporabe lahko povzroči veliko zdravstvenih težav, vključno s sevom, sindromom karpalnega kanala i...
S temi brezplačnimi orodji dodajte gibe miške v sistem Windows 10
V zadnjih letih so se računalniki in operacijski sistemi močno razvili. Včasih so morali uporabniki uporabljati ukaze za krmarjenje po upraviteljih da...
Nadzirajte in upravljajte gibanje miške med več monitorji v sistemu Windows 10
Upravitelj miške z dvojnim zaslonom vam omogoča nadzor in konfiguriranje gibanja miške med več monitorji, tako da upočasni gibanje blizu meje. Windows...