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, Srpanj
Anonim
Osnovni projekti OpenCV -a
Osnovni projekti OpenCV -a

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

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

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

VideoEdges funkcija
VideoEdges funkcija
VideoEdges funkcija
VideoEdges funkcija

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

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