INHOUDSOPGAWE:
- Voorrade
- Stap 1: FaceDetect -funksie
- Stap 2: BackgroundRemove -funksie
- Stap 3: VideoEdges -funksie
- Stap 4: VideoBlur -funksie
- Stap 5: Verbeterings
Video: OpenCV basiese projekte: 5 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:24
In hierdie projek ondersoek ons 'n paar basiese OpenCV -funksies deur middel van vier eenvoudige projekte wat 'n lewendige videostroom insluit. Dit is gesigsherkenning, agtergrondverwydering, spesiale visuele weergawe van rande en die toepassing van 'n vervaagde effek op die lewendige videostroom. My hoofdoel om hierdie projekte te probeer, was om eenvoudig my voete nat te maak met die OpenCV -koppelvlak, aangesien ek van plan is om dieper te kyk op die gebied van rekenaarvisie
Voorrade
- Rekenaar met Python
- Open CV -biblioteek, Numpy -biblioteek, tkinter -biblioteek, sys -biblioteek
- Kamera om aan te sluit op 'n rekenaar (as die rekenaar dit nie reeds bevat nie)
- Program se python -lêer (ingesluit in hierdie instruksies)
- haarcascade xml -lêer (ingesluit in hierdie instruksies)
Stap 1: FaceDetect -funksie
Hierdie funksie wys die video van u kamera met groen vierkante op enige gesigte wat dit optel. In die kode gebruik ons die funksie cv2. VideoCapture () om die video wat ons opneem, te stoor in 'n voorwerp met die naam "capture". Die CAPTURE_INDEX is 'n nommer wat deur u rekenaar gestel is en wat ooreenstem met die indeks van u kamera in die video -invoerlys van die rekenaar. As daar nie 'n buitekamera op u rekenaar is nie, behoort 0 of 1 te werk.
Die face_cascade -voorwerp word geïnisialiseer met behulp van die cascadeClassifier -funksie en die lêer "haarcascade_frontalface_default.xml" wat in die OpenCV -github gevind word. Ons gebruik hierdie voorwerp om die gesigte wat in die lys "gesigte" opgespoor word, op te slaan as 'n ingang vier-rigting-tupel wat die gesigte x koördinaat, y koördinaat, breedte en hoogte hou. Ons teken dan 'n reghoek wat die gesig perfek omhul met behulp van die cv2.rectangle -funksie
Uit hierdie video neem OpenCV baie beelde in ons lus met behulp van capture.read () en stoor die beeld in 'n raam wat ons 'img' genoem het. Elke beeld word dan geïnterpreteer en gewysig soos ons wil. Vir faceDetect maak ons die beeld grys met behulp van die cvtColor -funksie wat die beeld wat in die eerste parameter gegee word, omskakel na 'n spesifieke tipe beeldkleur wat in die tweede parameter gespesifiseer word. Die lys met aanvaarbare waardes vir die tweede parameter kan aanlyn gevind word. Ons vertoon die prent dan in 'n venster met die naam "Detecting the face" met behulp van die imshow () -funksie wat 'n string benodig vir die vensternaam en die raam wat vertoon moet word.
Uiteindelik wag ons op die gebruiker om die q -sleutel in te voer met die funksie cv2.waitKey (). Die 0xFF -masker word gebruik as 'n konvensie vir 64 -bit rekenaars. Nadat die gebruiker die videostroom beëindig het, bevry die faceDetect -funksie die opname -voorwerp en vernietig dan alle ander vensters wat onder die OpenCV -koppelvlak oopgemaak is. Al die ander funksies volg 'n soortgelyke ontwerpstruktuur.
Stap 2: BackgroundRemove -funksie
Hierdie funksie poog om die agtergrondgedeelte van ons video te verwyder en slegs die voorgrondbeeld te laat. Dit werk moontlik nie op sommige kameras nie, aangesien dit gebruik maak van 'n beligtingaanpassingsfunksie wat geaktiveer word wanneer verskillende voorwerpe/ fokuspunte die raam binnekom. As u agtergrondverwyderingsfunksie nie werk nie, moenie bekommerd wees nie; dit kan net u kamera wees!
Om hierdie funksie te gebruik, stap weg van die kameraramme en druk op die "d" -knoppie om die agtergrondbeeld op te neem. Dit is belangrik dat daar geen bewegende voorwerpe op die agtergrond is wat u wil opneem nie. Dan kan ons terug in die kameraram stap. As die funksie gewerk het, moet die gebruiker hulself slegs in die videostroom van die funksie sien. Enige geraas/swart kolle op die voorgrond kan die gevolg wees van die beligting van die kamera. Om 'n ander agtergrond vas te lê, druk die "r" -toets om weer te begin, en druk dan weer op "d".
'N Belangrike uitweg vir hierdie funksie is die gebruik van die "vlag" Boolean wat opgehef word sodra die gebruiker op die d-knoppie druk. Dit maak die agtergrond vas en stel ons in staat om dit te verwyder uit die video wat deur die funksie gestroom word. Ons streef daarna om die agtergrondprent in ref_img te stoor, sodat ons dit kan onderskei van die voorgrondbeeld, wat enige bewegende voorwerp vang. Ons gebruik die funksie cv2.subtract () om die voorgrondbeeld van die agtergrondbeeld af te trek en omgekeerd, en kanselleer dan onmiddellik daarna die kleinste verskille in die twee beelde. Die agtergrond is verduister.
Die fgmask word gemaak met behulp van die verskil tussen hierdie twee beelde en word dan op die funksiestroomstroom toegepas met behulp van die OpenCV cv2.bitwise_and () -funksie.
Stap 3: VideoEdges -funksie
Hierdie funksie gee 'n lewendige videostroom terug, maar die waarneembare rande word wit gemaak terwyl al die ander verduister word. Wat hierdie funksie van die ander funksies onderskei, is die omskakeling van ons oorspronklike video van RBG-formaat na HSV, wat staan vir kleur, versadiging en variasie- 'n ander manier om lig en kleur van 'n video te verwerk. Met hierdie metode kan ons die buitelyne in die video makliker onderskei deur 'n filter toe te pas (rooi_ laag tot rooi_hoog).
Canny Edge Detection word gebruik om die rande in 'n prent op te spoor. Dit aanvaar 'n grysskaalbeeld as invoer en gebruik 'n meertrap -algoritme.
Stap 4: VideoBlur -funksie
Hierdie funksie word gebruik om 'n vervaag -effek by ons videostroom te voeg. Die funksie noem eenvoudig die GaussianBlur cv2 -funksie op ons raam. Meer inligting oor die gaussianBlur -funksie kan hier gevind word:
opencv-python-tutroals.readthedocs.io/en/l…
Stap 5: Verbeterings
Die mees sensitiewe funksie in hierdie projek is die agtergrondverwyderingsfunksie, aangesien dit die gebruik van 'n kamera benodig wat nie funksies vir beligtingaanpassing het nie. Daar is moontlik 'n beter stel funksies in die OpenCV -biblioteek wat hierdie beligting kan aanpas en die agtergrond glad kan verwyder (soortgelyk aan 'n groen skerm).
Ons kan ook ander gesigsopsporingsfunksies gebruik wat voorwerpe met meer funksies kan produseer, behalwe net die terugvoer van (x, y) koördinate. Miskien sou 'n gesigsherkenningsprogram met die vermoë om gesigte te onthou nie te moeilik wees om te implementeer nie.
Die vervagingfunksie kan meer aangepas word deur intuïtiewe beheer deur die gebruiker. Die gebruiker wil byvoorbeeld die intensiteit van die vervagingseffek aanpas of 'n spesifieke gebied binne die raam kies om te vervaag.
Aanbeveel:
Komponente vir soldeeroppervlak - Basiese beginsels van soldeer: 9 stappe (met foto's)
Komponente vir soldeeroppervlak | Basiese beginsels van soldeer: Tot dusver in my Soldering Basics -reeks het ek genoeg basiese beginsels oor soldeer bespreek sodat u kan begin oefen. In hierdie instruksies is wat ek sal bespreek, 'n bietjie meer gevorderd, maar dit is 'n paar van die basiese beginsels vir die soldeer van die oppervlakoppervlak
Soldeer deur gatkomponente - Basiese beginsels van soldeer: 8 stappe (met foto's)
Soldeer deur gatkomponente | Basiese beginsels van soldeer: In hierdie instruksies bespreek ek 'n paar basiese beginsels oor soldeer deur-gat-komponente aan stroombane. Ek neem aan dat u reeds die eerste 2 instruksies vir my Soldering Basics -reeks nagegaan het. As u nog nie my In
Soldeerdrade aan drade - Basiese beginsels van soldeer: 11 stappe
Soldeerdrade aan drade | Basiese beginsels van soldeer: Vir hierdie instruksies bespreek ek algemene maniere om drade aan ander drade te soldeer. Ek neem aan dat u reeds die eerste 2 instruksies vir my Soldering Basics -reeks nagegaan het. As u nie my instruksies oor die gebruik van
LED -snapper: waarskynlik die mees basiese stuk toetsapparaat wat u kan maak: 3 stappe
LED Snapper: Waarskynlik die mees basiese stuk toetsapparaat wat u kan maak: Laat my toe om die LED Snapper aan u voor te stel. 'N Eenvoudige, maar baie bruikbare toetsapparaat wat u kan bou om u te help om u elektroniese projekte te ontfout. LED Snapper is 'n open source printplaat waarmee u maklik
10 basiese Arduino -projekte vir beginners! Maak ten minste 15 projekte met 'n enkele bord !: 6 stappe
10 basiese Arduino -projekte vir beginners! Maak ten minste 15 projekte met 'n enkele bord !: Arduino -projek &Studieraad; Bevat 10 basiese Arduino -projekte. Alle bronkodes, die Gerber -lêer en meer. Geen SMD nie! Maklike soldeer vir almal. Maklik verwyderbare en vervangbare komponente. U kan ten minste 15 projekte met een bo