avamine

Arvutinägemine põhitõed

Arvutinägemine põhitõed
Opencv (avatud lähtekoodiga arvutivisiooni teek) on Pythoni moodul, mida kasutatakse arvutinägemiseks. OpenCV on tasuta avatud lähtekoodiga moodul, mis sisaldab sadu algoritme erinevate ülesannete täitmiseks. Kõike alates näotuvastusest kuni liikumise tuvastamiseni saab teha OpenCV abil. Selles juhendis vaatleme aga OpenCV põhitõdesid.

Kõigepealt installime OpenCV:

pip3 installige opencv-python

Piltide lugemine ja näitamine

Esimene asi, mida peame õppima, on piltide lugemine ja kirjutamine. Pildifaili lugemine, faili täieliku tee sisestamine või faili nimi (kui fail asub kaustas Python) ja lipu lisamine toimub kasutades cv2.lugema (). Lipp võib võtta väärtuse 1 (värvilise pildi puhul), 0 (halltooni puhul) või -1 (kanaliga värvipildi puhul). Võib kasutada cv2.funktsioon imshow () pildi kuvamiseks; siin edastatakse kaks argumenti - nimi pildile ja kuvatav pilt. Järgmisena kasutame cv2.funktsioon waitKey () klaviatuuri sisestuse ootamiseks; a 0 cv2 jaoks.waitKey (0) funktsioon tähendab püsivat ooteaega. Teiselt poolt on cv2.Funktsioon hävitadaAllWindows () sulgeb aknad.

See loeb ja avab pildi ning hoiab pilti avatud, kuni selle sulgete:

import CV2
pilt = cv2.imread ('LinuxLogo.JPG ', 1)
cv2.imshow ('pilt', pilt)
cv2.waitKey (0)
cv2.destrAllWindows ()

Kirjutage pildid

Kasutame cv2.pildi salvestamiseks funktsioon imwrite (). Sellel funktsioonil on kaks parameetrit - nimi pildi salvestamiseks ja pilt, mida soovite salvestada.

import CV2
pilt = cv2.imread ('tuvastama.jpg ', -1)
cv2.imwrite ('save_image.png ', pilt)

Jäädvustage veebikaamerast video

Videote jäädvustamiseks alustame cv2.VideoCapture () funktsioon. Seejärel kasutame video jäädvustamiseks silmust "while". Kuigi kasutaja ei vajuta väljumisklahvi, saame raame lugeda ja neid kasutada, kasutades read () ja cv2.funktsioon imshow (). Seejärel panime silmusest väljumiseks klahvi “break”; sel juhul on number 27 ESC-võti. Kui kasutaja vajutab ESC-klahvi, murravad nad silmusest välja. Kui olete silmusest väljunud, on vaja hõivamine vabastada.

impordi numpy kui np
import CV2
püüdmine = cv2.Video jäädvustamine (0)
samas (tõene):
ret, frame = jäädvustamine.loe ()
cv2.imshow ('raam', raam)
kui cv2.waitKey (1) & 0xFF == 27:
murda
jäädvustama.vabastama ()
cv2.destrAllWindows ()

Videofaili esitamine

Videofaili esitamine on nagu video jäädvustamine veebikaamerast. Selleks kuvatakse cv2.Kasutatakse funktsiooni VideoCapture (); seejärel lisatakse funktsioonile videofaili nimi, mida soovite esitada. Silmast “while” kasutatakse uuesti ja väljumisvõtmeks on sel juhul klaviatuuri “s” klahv. See avab ja esitab videofaili ning sulgeb selle, kui kasutaja vajutab klahvi “s”.

impordi numpy kui np
import CV2
püüdmine = cv2.VideoCapture ("Megamind.avi ")
samas (tõene):
ret, frame = jäädvustamine.loe ()
cv2.imshow ('raam', raam)
kui cv2.waitKey (1) & 0xFF == ord ("s"):
murda
jäädvustama.vabastama ()
cv2.destrAllWindows ()

Videofaili salvestamine

Videofaili salvestamine nõuab natuke rohkem tööd. CV2.Funktsioon VideoWriter () võtab kokku 4 parameetrit - väljundfaili nime, FourCC koodi, kaadrite arvu sekundis ja kaadri suurust. Lisaks tuleb määratleda FourCC kood, mis on videokoodek, mis kasutab cv2.Funktsioon VideoWriter_fourcc (). Pildistamise kasutamine.isOpened (), loeme raami ja kirjutame väljundraami. Kaadreid saame näidata ka cv2 abil.funktsioon imshow (). Seejärel kasutame cv2.exitKey (1) & 0xFF == ord ('s') väljundvõtme määramiseks. Sellisel juhul, kui kasutaja vajutab klahvi “s”, väljub ta silmusest, vabastab seejärel hõivamise ja väljundi ning sulgeb aknad.

impordi numpy kui np
import CV2
püüdmine = cv2.Video jäädvustamine (0)
fourcc = cv2.VideoWriter_fourcc (* 'XVID')
väljund = cv2.VideoWriter ('väljund.avi ', neljakordne, 30.0, (640 480))
samas (jäädvustama.isOpened ()):
ret, frame = jäädvustamine.loe ()
väljund.kirjutama (raam)
cv2.imshow ('raam', raam)
kui cv2.waitKey (1) & 0xFF == ord ('s'):
murda
jäädvustama.vabastama ()
väljund.vabastama ()
cv2.destrAllWindows ()

Joonte, ringide, ristkülikute ja tekstide joonistamine

Esimene asi, mida õpime joonistama, on joon. Joone tõmbamiseks kasutame lihtsalt cv2.line () funktsioon. Funktsioon võtab 5 argumenti - lähtevideo, alguspunkti, lõpp-punkti, värvi ja joone paksuse. Järgmisel juhul oleme otsustanud joonistada ristkülikukujulise piiri (koosneb neljast joonest):

import CV2
püüdmine = cv2.VideoCapture ('vtest.avi ')
tõsi:
ret, frame = jäädvustamine.loe ()
laius = int (püüdmine.saada (3))
kõrgus = int (püüdmine.saada (4))
joon1 = cv2.joon (raam, (0,0), (0, kõrgus), (255, 255, 255), 10)
joon2 = cv2.rida (rida1, (0, 0), (laius, 0), (255, 255, 255), 10)
joon3 = cv2.joon (joon2, (0, kõrgus), (laius, kõrgus), (255, 255, 255), 10)
rida4 = cv2.rida (rida3, (laius, 0), (laius, kõrgus), (255, 255, 255), 10)
cv2.imshow ('raam', rida4)
kui cv2.waitKey (40) == ord ('q'):
murda
jäädvustama.vabastama ()
cv2.destrAllWindows ()

Järgmisena joonistame videole nii ringi kui ristküliku. Ristküliku joonistamiseks kasutame cv2.ristkülik () funktsioon, mis võtab 5 argumenti sarnaselt joonega. Ringi joonistamiseks kasutame funktsiooni cv2.ring (), mis võtab samuti 5 argumenti - lähtevideo, keskpunkt, raadius, värv ja paksus.

import CV2
püüdmine = cv2.VideoCapture ('vtest.avi ')
tõsi:
ret, frame = jäädvustamine.loe ()
laius = int (püüdmine.saada (3))
kõrgus = int (püüdmine.saada (4))
ristkülik = cv2.ristkülik (raam, (150, 15), (650, 550), (0,0,0), 11)
cv2.ring (ristkülik, (250, 250), 60, (0,0,0), 11)
cv2.imshow ('raam', raam)
kui cv2.waitKey (40) == ord ('q'):
murda
jäädvustama.vabastama ()
cv2.destrAllWindows ()

Lisagem nüüd veidi videot, mis meil on. Selleks peame määrama fondi; siin valisime cv2.FONT_HERSHEY_SIMPLEX. Kui font on valitud, saame kasutada funktsiooni cv2.putText () ülejäänud tegemiseks. CV2.putText () võtab 8 argumenti - lähtevideo, kirjutatava teksti, asukoha, kuhu soovid, fondi, suurenduse, värvi, paksuse ja cv2.LINE_AA (mis muudab kõik paremaks).

import CV2
püüdmine = cv2.VideoCapture ('vtest.avi ')
tõsi:
ret, frame = jäädvustamine.loe ()
laius = int (püüdmine.saada (3))
kõrgus = int (püüdmine.saada (4))
font = cv2.FONT_HERSHEY_SIMPLEX
pilt = cv2.putText (raam, "VTEST.AVI ", (200, 200), font, 4, (0,0,0), 5, cv2.LINE_AA)
cv2.imshow ('raam', pilt)
kui cv2.waitKey (40) == ord ('q'):
murda
jäädvustama.vabastama ()
cv2.destrAllWindows ()

OpenCV on võimeline paljudeks suurteks asjadeks, kus kusagilt tuleb alustada. See võib olla piltide ja videote loomise ja salvestamise õppimine. Selles õpetuses õppisime tegema arvutinägemise põhitõdesid.

Head kodeerimist!

Hiire keskmine nupp ei tööta Windows 10-s
The hiire keskmine nupp aitab teil sirvida pikki rohke andmega veebisaite ja ekraane. Kui see peatub, siis lõpuks kasutate kerimiseks klaviatuuri, mis...
Kuidas muuta hiire vasakut ja paremat nuppu Windows 10 PC-s
On üsna tavaline, et kõik arvutihiirte seadmed on ergonoomiliselt mõeldud parempoolsete kasutajate jaoks. Kuid on olemas hiire seadmeid, mis on spetsi...
Jäljendage hiireklikke, hõljutades hiirega klõpsutut hiirt Windows 10-s
Hiire või klaviatuuri kasutamine liigses kasutamises vales asendis võib põhjustada palju terviseprobleeme, sealhulgas tüve, karpaalkanali sündroom ja ...