Sisukord:

OpenCV põhiprojektid: 5 sammu
OpenCV põhiprojektid: 5 sammu

Video: OpenCV põhiprojektid: 5 sammu

Video: OpenCV põhiprojektid: 5 sammu
Video: OpenCV Course - Full Tutorial with Python 2024, Juuli
Anonim
OpenCV põhiprojektid
OpenCV põhiprojektid

Selles projektis uurime mõningaid OpenCV põhifunktsioone nelja lihtsa projekti kaudu, mis hõlmavad otsevideovoogu. Need on näotuvastus, tausta eemaldamine, servade eriline visuaalne renderdamine ja hägustava efekti rakendamine otsevideovoole. Minu peamine eesmärk neid projekte proovida oli OpenCV liidesega jalad lihtsalt märjaks teha, kuna kavatsen süveneda arvuti nägemisvaldkonda

Tarvikud

  • Arvuti, mis töötab Pythoniga
  • Avatud CV raamatukogu, Numpy raamatukogu, tkinter raamatukogu, sys raamatukogu
  • Kaamera arvutiga ühendamiseks (kui arvuti seda veel ei sisalda)
  • Programmi pythoni fail (sisaldub selles juhendis)
  • haarcascade xml -fail (sisaldub selles juhendis)

Samm: FaceDetect funktsioon

FaceDetect funktsioon
FaceDetect funktsioon
FaceDetect funktsioon
FaceDetect funktsioon

See funktsioon näitab teie kaamera videot roheliste ruutudega mis tahes näol, mille see üles võtab. Koodis kasutame funktsiooni cv2. VideoCapture (), et salvestada jäädvustatud video objekti nimega "püüdmine". CAPTURE_INDEX on teie arvuti määratud number, mis vastab teie arvuti sisendloendis oleva kaamera indeksile. Kui arvutiga pole ühendatud väliskaamerat, peaks 0 või 1 töötama.

Face_cascade objekt lähtestatakse funktsiooni cascadeClassifier ja OpenCV githubis leiduva faili "haarcascade_frontalface_default.xml" abil. Kasutame seda objekti nimekirjas "näod" tuvastatud nägude salvestamiseks neljasuunalisena, mis hoiab nägusid x koordinaat, y koordinaat, laius ja kõrgus. Seejärel joonistame ristküliku, mis ümbritseb nägu ideaalselt, kasutades funktsiooni cv2.rectangle

Sellest videost jäädvustab OpenCV paljusid meie samasilmus olevaid pilte, kasutades capture.read () ja salvestab pildi kaadrisse, mida nimetasime "img". Seejärel tõlgendatakse ja muudetakse iga pilti vastavalt soovile. FaceDetecti puhul muudame pildi halliks, kasutades funktsiooni cvtColor, mis teisendab esimeses parameetris antud pildi teatud parameetriks, mis on määratud teises parameetris. Teise parameetri vastuvõetavate väärtuste loendi leiate veebist. Seejärel kuvame pildi aknas nimega "Näo tuvastamine", kasutades funktsiooni imshow (), mis võtab akna nime ja pildiraami kuvamiseks stringi.

Lõpuks ootame, kuni kasutaja sisestab funktsiooni cv2.waitKey () abil klahvi q. Maski 0xFF kasutatakse tavapäraselt 64 -bitiste arvutite jaoks. Kui kasutaja on videovoo lõpetanud, vabastab funktsioon faceDetect jäädvustusobjekti ja hävitab kõik muud OpenCV liidese all avatud aknad. Kõik muud funktsioonid järgivad sarnast konstruktsiooni.

2. samm: funktsioon BackgroundRemove

Funktsioon BackgroundRemove
Funktsioon BackgroundRemove
Funktsioon BackgroundRemove
Funktsioon BackgroundRemove

See funktsioon üritab eemaldada meie video taustaosa ja jätta ainult esiplaani pildi. See ei pruugi mõnel kaameral töötada, kuna see kasutab valgustuse reguleerimise funktsiooni, mis aktiveerub, kui kaadrisse sisenevad erinevad objektid/ fookused. Kui teie tausta eemaldamise funktsioon ei tööta, ärge muretsege- see võib olla lihtsalt teie kaamera!

Selle funktsiooni kasutamiseks astuge kaamera raamist eemale ja vajutage taustpildi jäädvustamiseks klahvi "d". On oluline, et taustal ei oleks ühtegi liikuvat objekti, mida soovite jäädvustada. Siis saame kaamera raami tagasi astuda. Kui funktsioon töötas, peaks kasutaja nägema ennast ainult funktsiooni videovoos. Igasugune müra/must täpp esiplaanil võib olla tingitud kaamera valgustuse reguleerimisest. Teise tausta jäädvustamiseks vajutage uuesti käivitamiseks klahvi "r", seejärel vajutage uuesti "d".

Selle funktsiooni mõned võtmed on "lipu" tõeväärtuse kasutamine, mis tõuseb kohe, kui kasutaja vajutab nuppu d. See jäädvustab tausta ja võimaldab meil selle funktsiooni voogesitatud videost eemaldada. Meie eesmärk on salvestada taustapilt ref_img, et saaksime seda eristada esiplaanist, mis jäädvustab kõiki liikuvaid objekte. Kasutame funktsiooni cv2.subtract (), et lahutada esiplaanil olev pilt taustpildist ja vastupidi, seejärel tühistada kohe pärast seda kahe pildi väikesed erinevused. Taust on must.

Fgmask valmistatakse nende kahe pildi erinevuse abil ja rakendatakse seejärel funktsioonile videovoog, kasutades funktsiooni OpenCV cv2.bitwise_and ().

3. samm: funktsioon VideoEdges

VideoEdges funktsioon
VideoEdges funktsioon
VideoEdges funktsioon
VideoEdges funktsioon

See funktsioon tagastab meie otsevideovoo, kuid tuvastatavad servad muudetakse valgeks, samas kui kõik muu on pimendatud. Mis eristab seda funktsiooni teistest funktsioonidest, on meie algse video teisendamine RBG-vormingust HSV-ks, mis tähistab tooni, küllastust ja variatsiooni- erinevat video ja valguse töötlemise meetodit. Selle meetodi abil saame hõlpsamini video piirjooni eristada, rakendades filtrit (red_low kuni red_high).

Canny Edge Detectionit kasutatakse pildi servade tuvastamiseks. See aktsepteerib sisendina halli skaala kujutist ja kasutab mitmeastmelist algoritmi.

Samm 4: VideoBlur funktsioon

VideoBlur funktsioon
VideoBlur funktsioon
VideoBlur funktsioon
VideoBlur funktsioon

Seda funktsiooni kasutatakse meie videovoole hägususe lisamiseks. Funktsioon lihtne kutsub meie raamil funktsiooni GaussianBlur cv2. Lisateavet funktsiooni gaussianBlur kohta leiate siit:

opencv-python-tutroals.readthedocs.io/en/l…

5. samm: täiustused

Selle projekti kõige tundlikum funktsioon on tausta eemaldamise funktsioon, kuna see nõuab kaamera kasutamist, millel puudub valgustuse reguleerimise funktsioon. OpenCV raamatukogus võib olla parem funktsioonide komplekt, mis võtab selle valgustuse reguleerimise arvesse ja eemaldab sujuvalt tausta (sarnaselt rohelisele ekraanile).

Võiksime kasutada ka muid näotuvastusfunktsioone, mis võivad toota rohkem funktsioone kui lihtsalt (x, y) koordinaatide tagastamine. Võib -olla poleks nägude meeldejätmise võimega näotuvastusprogrammi rakendamine liiga keeruline.

Hägususe funktsiooni saab kasutaja intuitiivse juhtimise abil rohkem kohandada. Näiteks võib kasutaja soovida hägususefekti intensiivsust reguleerida või valida hägustamiseks kaadris kindla ala.

Soovitan: