Sadržaj:

Osnovni projekti OpenCV -a: 5 koraka
Osnovni projekti OpenCV -a: 5 koraka

Video: Osnovni projekti OpenCV -a: 5 koraka

Video: Osnovni projekti OpenCV -a: 5 koraka
Video: Проектируем систему распознавания лиц и номеров - новые функции IP Video System Design Tool 11 2024, Novembar
Anonim
OpenCV osnovni projekti
OpenCV osnovni projekti

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

Funkcija FaceDetect
Funkcija FaceDetect
Funkcija FaceDetect
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

BackgroundRemove funkcija
BackgroundRemove funkcija
BackgroundRemove funkcija
BackgroundRemove funkcija

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

VideoEdges funkcija
VideoEdges funkcija
VideoEdges funkcija
VideoEdges funkcija

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

VideoBlur funkcija
VideoBlur funkcija
VideoBlur funkcija
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: