Sadržaj:
- Pribor
- Korak 1: Funkcija FaceDetect
- Korak 2: Funkcija BackgroundRemove
- Korak 3: Funkcija VideoEdges
- Korak 4: VideoBlur funkcija
- Korak 5: Poboljšanja
Video: Osnovni projekti OpenCV -a: 5 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:33
U ovom projektu istražujemo neke osnovne funkcije OpenCV -a kroz 4 jednostavna projekta koji uključuju video prijenos uživo. To su prepoznavanje lica, uklanjanje pozadine, posebno vizualno prikazivanje rubova i primjena efekta zamućenja na video stream uživo. Moja glavna svrha isprobavanja ovih projekata bila je jednostavno navlažiti noge OpenCV sučeljem, jer planiram dublje zaroniti u polje računalnog vida
Pribor
- Računalo s Pythonom
- Otvorena knjižnica životopisa, knjižnica Numpy, knjižnica tkinter, biblioteka sys
- Kamera za povezivanje s računalom (ako računalo već ne uključuje)
- Python datoteka programa (uključena u ovu uputu)
- haarcascade xml datoteka (uključena u ovu uputu)
Korak 1: Funkcija FaceDetect
Ova funkcija prikazuje video zapis vaše kamere sa zelenim kvadratima na svim licima koja pokupi. U kodu koristimo funkciju cv2. VideoCapture () za spremanje videozapisa koji snimamo u objekt pod nazivom "snimanje". CAPTURE_INDEX je broj koji je postavilo vaše računalo i koji odgovara indeksu vaše kamere na popisu video ulaza na računalu. Ako vanjska kamera nije spojena na vaše računalo, 0 ili 1 bi trebale raditi.
Objekt face_cascade inicijalizira se pomoću funkcije cascadeClassifier i datoteke "haarcascade_frontalface_default.xml" koja se nalazi u OpenCV githubu. Ovaj objekt koristimo za spremanje lica otkrivenih na popisu "lica" kao četverosmjerni unos koji drži lica x koordinatu, y koordinatu, širinu i visinu. Zatim pomoću funkcije cv2.rectangle nacrtamo pravokutnik koji savršeno zatvara lice
Iz ovog videa, OpenCV snima mnoge slike u našoj while petlji pomoću Capture.read () i pohranjuje sliku u okvir koji smo nazvali "img". Svaka se slika zatim tumači i modificira kako želimo. Za faceDetect sliku činimo sivom pomoću funkcije cvtColor koja pretvara bilo koju sliku datu u prvom parametru u određenu vrstu boje slike navedenu u drugom parametru. Popis prihvatljivih vrijednosti za drugi parametar može se pronaći na internetu. Zatim sliku prikazujemo u prozoru pod nazivom "Otkrivanje lica" pomoću funkcije imshow () koja uzima niz za naziv prozora i okvir slike za prikaz.
Konačno čekamo da korisnik unese tipku q pomoću funkcije cv2.waitKey (). Maska 0xFF koristi se kao konvencija za 64 -bitna računala. Nakon što je korisnik završio video stream, funkcija faceDetect oslobađa objekt snimanja i uništava sve druge prozore otvorene pod OpenCV sučeljem. Sve ostale funkcije slijede sličnu strukturu dizajna.
Korak 2: Funkcija BackgroundRemove
Ova funkcija pokušava ukloniti dio pozadine našeg videozapisa i ostaviti samo sliku u prednjem planu. Možda neće raditi na nekim kamerama jer koriste funkciju podešavanja osvjetljenja koja se aktivira kada različiti objekti/ žarišta uđu u kadar. Ako vaša funkcija BackgroundRemove ne radi, nemojte se uzrujavati- to bi mogla biti samo vaša kamera!
Da biste koristili ovu funkciju, odmaknite se od okvira kamere i pritisnite tipku "d" za snimanje pozadinske slike. Važno je da u pozadini nema pokretnih objekata koje želite snimiti. Zatim možemo zakoračiti natrag u okvir kamere. Ako je funkcija radila, korisnik bi se trebao vidjeti samo u video streamu funkcije. Bilo koji šum/crne mrlje na slici u prednjem planu mogu biti posljedica podešavanja osvjetljenja fotoaparata. Za snimanje druge pozadine pritisnite tipku "r" za ponovnu inicijalizaciju, a zatim ponovno pritisnite "d".
Neka ključna rješenja za ovu funkciju je upotreba logičke logičke vrijednosti "flag" koja se podiže u trenutku kada korisnik pritisne gumb d. Ovo snima pozadinu i omogućuje nam da je uklonimo iz videozapisa koji funkcija struji. Cilj nam je pohraniti pozadinsku sliku u ref_img kako bismo je mogli razlikovati od slike u prednjem planu koja snima sve pokretne objekte. Koristimo funkciju cv2.subtract () za oduzimanje prednje slike od pozadinske slike i obrnuto, a zatim poništavamo sve male razlike na dvije slike odmah nakon toga. Pozadina je zamračena.
Fgmaska je napravljena korištenjem razlike između ove dvije slike, a zatim se primjenjuje na video stream funkcija pomoću funkcije OpenCV cv2.bitwise_and ().
Korak 3: Funkcija VideoEdges
Ova funkcija vraća naš video stream uživo, ali rubovi koji se mogu otkriti postaju bijeli dok je sve ostalo zamračeno. Ono po čemu se ova funkcija razlikuje od ostalih funkcija je pretvaranje našeg izvornog videa iz RBG formata u HSV, što znači nijansa, zasićenje i varijacija- drugačiji način obrade svjetla i boja od videa. Ovom metodom možemo lakše razlikovati obrise u videu primjenom filtera (red_low do red_high).
Canny Edge Detection koristi se za otkrivanje rubova slike. Prihvaća sliku sive ljestvice kao ulaz i koristi višestepeni algoritam.
Korak 4: VideoBlur funkcija
Ova se funkcija koristi za dodavanje efekta zamućenja našem video streamu. Jednostavna funkcija poziva funkciju GaussianBlur cv2 na našem okviru. Dodatne informacije o funkciji gaussianBlur možete pronaći ovdje:
opencv-python-tutroals.readthedocs.io/en/l…
Korak 5: Poboljšanja
Najosjetljivija funkcija u ovom projektu je funkcija uklanjanja pozadine jer zahtijeva upotrebu kamere koja nema funkciju podešavanja osvjetljenja. Možda postoji bolji skup funkcija unutar biblioteke OpenCV koje mogu objasniti ovu prilagodbu osvjetljenja i glatko ukloniti pozadinu (slično zelenom ekranu).
Također bismo mogli koristiti druge funkcije otkrivanja lica koje mogu proizvesti objekte s više funkcija osim samo vraćanja (x, y) koordinata. Možda program prepoznavanja lica sa sposobnošću pamćenja lica ne bi bilo previše teško provesti.
Funkcijom zamućenja može se dodatno prilagoditi intuitivna kontrola od strane korisnika. Na primjer, korisnik može željeti prilagoditi intenzitet efekta zamućenja ili odabrati određeno područje u okviru za zamućivanje.
Preporučeni:
C ++ Osnovni program: 11 koraka
C ++ osnovni program: u ovom programu ćete naučiti osnove c ++ kodiranjem jednostavnog c ++ programa za stvaranje više korisnika i prikaz ovih korisnika, nadam se da ćete uživati
NAIN 1.0 - osnovni humanoidni robot koji koristi Arduino: 6 koraka
NAIN 1.0 - osnovni humanoidni robot koji koristi Arduino: Nain 1.0 će u osnovi imati 5 odvojivih modula - 1) Arm - kojima se može upravljati putem servo upravljača. 2) Kotači - kojima se može upravljati istosmjernim motorima. 3) Noga - Nain će se moći kretati između kotača ili nogu radi kretanja. 4) Glava i
Walter the Microbot Bot Osnovni pokret: 26 koraka
Walter the Microbot Bot Osnovni pokret: Mi ćemo programirati Walter the Micro: Bot
Osnovni vodič za Arduino Bluetooth: 6 koraka (sa slikama)
Osnovni vodič za Arduino Bluetooth: UPDATE: AŽURIRANU VERZIJU OVOG ČLANKA MOŽETE NAĆI OVDJE Jeste li ikada razmišljali o kontroli elektroničkih uređaja svojim pametnim telefonom? Upravljanje vašim robotom ili bilo kojim drugim uređajem putem pametnog telefona bit će stvarno super. Evo jednostavnog i bas
Funbot - osnovni motorizirani proširivi robot: 7 koraka
Funbot - osnovni motorizirani proširivi robot: Pozdrav svima. Danas ću vam pokazati kako izgraditi FunBot - super lakog motoriziranog robota koji se može motati, crtati uzorke, okretati se i pretvoriti u botača. Može se proširiti dijelovima, relejima, pa čak i mikro-kontrolerima, ali ovo svijetli