Sadržaj:
- Supplies
- 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 izmjena: 2024-01-30 08:05
U ovom projektu istražujemo neke osnovne OpenCV funkcionalnosti 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 prijenos uživo. Moja glavna svrha isprobavanja ovih projekata bila je jednostavno navlažiti noge OpenCV interfejsom, jer planiram dublje zaroniti u polje računarskog vida
Supplies
- Računar sa Python -om
- Otvorena CV biblioteka, Numpy biblioteka, tkinter biblioteka, biblioteka sys
- Kamera za povezivanje sa računarom (ako računar već ne uključuje)
- Python datoteka programa (uključena u ovu instrukciju)
- 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 postavio vaš računar i koji odgovara indeksu vaše kamere na listi video ulaza na računaru. Ako vanjska kamera nije spojena na vaš računar, 0 ili 1 bi trebalo raditi.
Objekt face_cascade se inicijalizira pomoću funkcije cascadeClassifier i datoteke "haarcascade_frontalface_default.xml" koja se nalazi u OpenCV githubu. Ovaj objekt koristimo za spremanje lica otkrivenih na "licima" popisa kao unos u četiri smjera koji drži lica x koordinatu, y koordinatu, širinu i visinu. Zatim nacrtamo pravokutnik koji savršeno zatvara lice pomoću funkcije cv2.rectangle
Iz ovog videa, OpenCV snima mnoge slike u našoj while petlji koristeći Capture.read () i spremajući sliku u okvir koji smo nazvali "img". Svaka slika se 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đeni tip boje slike naveden 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 -bitne računare. 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 rezultat podešavanja osvjetljenja fotoaparata. Da biste snimili drugu pozadinu, pritisnite tipku "r" za ponovnu inicijalizaciju, a zatim ponovo pritisnite "d".
Neka ključna rješenja za ovu funkciju je upotreba logičke logičke tipke koja se podiže u trenutku kada korisnik pritisne dugme d. Ovo snima pozadinu i omogućuje nam da je uklonimo iz videozapisa koji funkcija emitira. Cilj nam je pohraniti pozadinsku sliku u ref_img kako bismo je razlikovali od slike u prednjem planu koja snima bilo koji pokretni objekt. 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 zatamnjena.
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 prijenos 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 sivu skalu kao ulaz i koristi višestepeni algoritam.
Korak 4: VideoBlur funkcija
Ova funkcija se 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 ovo podešavanje 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 implementirati.
Funkcijom zamućenja može se dodatno prilagoditi intuitivna kontrola od strane korisnika. Na primjer, korisnik će možda željeti prilagoditi intenzitet efekta zamućenja ili odabrati određeno područje u okviru za zamućivanje.
Preporučuje se:
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 prikazivanje ovih korisnika, nadam se da ćete uživati
Kako izgraditi igraći ili osnovni računar (sve komponente): 13 koraka
Kako izgraditi igrački ili osnovni računar (sve komponente): Znači, želite da znate kako da napravite računar? U ovim instrukcijama ću vas naučiti kako izgraditi osnovni desktop računar. Evo potrebnih dijelova: Matična ploča kućišta računara (Provjerite je li PGA ako AMD i LGA ako je Intel) Kućište ventilatora Pow
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) Točkovi - koji se može kontrolirati pomoću istosmjernih motora. 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 pomislili da kontrolirate bilo koje elektroničke uređaje svojim pametnim telefonom? Upravljanje vašim robotom ili bilo kojim drugim uređajem putem vašeg pametnog telefona bit će zaista super. Evo jednostavnog i bas