Turinys:
- Prekės
- 1 žingsnis: „FaceDetect“funkcija
- 2 žingsnis: „BackgroundRemove“funkcija
- 3 žingsnis: „VideoEdges“funkcija
- 4 žingsnis: „VideoBlur“funkcija
- 5 žingsnis: patobulinimai
Video: „OpenCV Basic“projektai: 5 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:45
Šiame projekte mes tyrinėjame kai kurias pagrindines „OpenCV“funkcijas per 4 paprastus projektus, apimančius tiesioginį vaizdo srautą. Tai veido atpažinimas, fono pašalinimas, specialus vaizdinis kraštų atvaizdavimas ir neryškaus efekto taikymas tiesioginiam vaizdo įrašo srautui. Mano pagrindinis tikslas bandant šiuos projektus buvo tiesiog sušlapti kojas naudojant „OpenCV“sąsają, nes planuoju gilintis į kompiuterio regėjimo sritį
Prekės
- Kompiuteris, kuriame veikia „Python“
- Atidaryti CV biblioteką, „Numpy“biblioteką, „tkinter“biblioteką, „sys“biblioteką
- Fotoaparatas, skirtas prijungti prie kompiuterio (jei kompiuteryje dar nėra)
- Programos „python“failas (įtrauktas į šią instrukciją)
- haarcascade xml failas (įtrauktas į šią instrukciją)
1 žingsnis: „FaceDetect“funkcija
Ši funkcija rodo jūsų fotoaparato vaizdo įrašą su žaliais kvadratais ant visų veidų, kuriuos jis užfiksuoja. Kode mes naudojame funkciją cv2. VideoCapture (), kad išsaugotume įrašytą vaizdo įrašą objekte, pavadintame „užfiksuoti“. CAPTURE_INDEX yra jūsų kompiuterio nustatytas skaičius, atitinkantis jūsų fotoaparato rodyklę kompiuterio vaizdo įvesties sąraše. Jei prie kompiuterio nėra prijungta išorinė kamera, turėtų veikti 0 arba 1.
„Face_cascade“objektas inicijuojamas naudojant funkciją „cascadeClassifier“ir failą „haarcascade_frontalface_default.xml“, esantį „OpenCV github“. Mes naudojame šį objektą, kad išsaugotume sąraše „veidai“aptiktus veidus kaip keturių krypčių įvesties įrašą, kuriame būtų veidai x koordinatė, y koordinatė, plotis ir aukštis. Tada nupiešiame stačiakampį, kuris puikiai apgaubia veidą, naudodami cv2.rectangle funkciją
Iš šio vaizdo įrašo „OpenCV“užfiksuoja daugybę vaizdų mūsų cikle, naudodama „capture.read“() ir išsaugodama vaizdą rėmelyje, kurią pavadinome „img“. Tada kiekvienas vaizdas interpretuojamas ir keičiamas taip, kaip mes norime. Naudodami „FaceDetect“vaizdą padarome pilką, naudodami funkciją „cvtColor“, kuri bet kokį pirmame parametre pateiktą vaizdą paverčia tam tikros rūšies vaizdo spalva, nurodyta antrame parametre. Antrojo parametro priimtinų verčių sąrašą galima rasti internete. Tada vaizdą rodome lange, pavadintame „Veido aptikimas“, naudodami funkciją „imshow ()“, kuri paima eilutę, kad būtų rodomas lango pavadinimas ir vaizdo rėmelis.
Galiausiai laukiame, kol vartotojas įves q raktą naudodami funkciją cv2.waitKey (). 0xFF kaukė naudojama kaip įprasta 64 bitų kompiuteriams. Kai vartotojas baigia vaizdo įrašų srautą, „faceDetect“funkcija atlaisvina fotografavimo objektą ir sunaikina visus kitus langus, atidarytus pagal „OpenCV“sąsają. Visos kitos funkcijos yra panašios konstrukcijos.
2 žingsnis: „BackgroundRemove“funkcija
Ši funkcija bando pašalinti mūsų vaizdo įrašo fono dalį ir palikti tik priekinio plano vaizdą. Kai kuriose kamerose jis gali neveikti, nes juose naudojama apšvietimo reguliavimo funkcija, kuri įjungiama, kai į kadrą patenka skirtingi objektai/ židiniai. Jei jūsų fono pašalinimo funkcija neveikia, nesijaudinkite- tai gali būti tik jūsų fotoaparatas!
Norėdami naudoti šią funkciją, atsitraukite nuo fotoaparato rėmo ir paspauskite „d“klavišą, kad užfiksuotumėte fono vaizdą. Svarbu, kad fone nebūtų judančių objektų, kuriuos norite užfiksuoti. Tada galime grįžti į fotoaparato rėmą. Jei funkcija veikė, vartotojas turėtų matyti save tik funkcijos vaizdo sraute. Bet koks triukšmas/juodos dėmės priekiniame plane gali atsirasti dėl fotoaparato apšvietimo reguliavimo. Norėdami užfiksuoti kitą foną, paspauskite „r“klavišą, kad iš naujo inicijuotumėte, tada dar kartą paspauskite „d“.
Kai kurie pagrindiniai šios funkcijos šalinimo būdai yra „vėliavos“loginės vertės naudojimas, kuris atsiranda iškart, kai vartotojas paspaudžia d mygtuką. Tai užfiksuoja foną ir leidžia mums jį pašalinti iš vaizdo įrašo, kurį transliuoja funkcija. Mes siekiame išsaugoti fono vaizdą „ref_img“, kad galėtume jį atskirti nuo priekinio plano vaizdo, kuriame užfiksuotas bet koks judantis objektas. Mes naudojame funkciją cv2.subtract (), kad atimtume priekinį žemės vaizdą iš fono paveikslėlio ir atvirkščiai, tada iš karto po to panaikinsime nedidelius dviejų vaizdų skirtumus. Fonas yra užtemdytas.
„Fgmask“padaryta naudojant šių dviejų vaizdų skirtumą ir tada taikoma funkcijoms vaizdo sraute naudojant funkciją „OpenCV cv2.bitwise_and ()“.
3 žingsnis: „VideoEdges“funkcija
Ši funkcija grąžina tiesioginį vaizdo įrašo srautą, tačiau aptinkami kraštai yra balti, o visa kita yra užtemdyta. Šią funkciją iš kitų išskiria tai, kad mūsų originalus vaizdo įrašas yra konvertuojamas iš RBG formato į HSV, kuris reiškia atspalvį, sodrumą ir kitimą- kitokį vaizdo ir šviesos apdorojimo būdą. Taikydami šį metodą, vaizdo įraše lengviau atskirti kontūrus, pritaikę filtrą (nuo red_low iki red_high).
„Canny Edge Detection“naudojamas aptikti vaizdo kraštus. Jis priima pilkos skalės vaizdą kaip įvestį ir naudoja daugiapakopį algoritmą.
4 žingsnis: „VideoBlur“funkcija
Ši funkcija naudojama norint pridėti neryškų efektą į mūsų vaizdo įrašų srautą. Funkcija paprasta iškviečia „GaussianBlur cv2“funkciją mūsų kadre. Daugiau informacijos apie „gaussianBlur“funkciją rasite čia:
opencv-python-tutroals.readthedocs.io/en/l…
5 žingsnis: patobulinimai
Jautriausia šio projekto funkcija yra fono pašalinimo funkcija, nes reikia naudoti fotoaparatą, kuris neturi apšvietimo reguliavimo funkcijos. „OpenCV“bibliotekoje gali būti geresnis funkcijų rinkinys, kuris gali atsižvelgti į šį apšvietimo reguliavimą ir sklandžiai pašalinti foną (panašiai kaip žalias ekranas).
Taip pat galėtume naudoti kitas veido aptikimo funkcijas, kurios gali sukurti daugiau funkcijų turinčius objektus, o ne tik grąžinti (x, y) koordinates. Galbūt veido atpažinimo programą, galinčią įsiminti veidus, nebūtų pernelyg sunku įgyvendinti.
Suliejimo funkciją galima labiau pritaikyti intuityviai valdant vartotojui. Pavyzdžiui, vartotojas gali norėti koreguoti suliejimo efekto intensyvumą arba pasirinkti tam tikrą kadro sritį, kurią norite sulieti.
Rekomenduojamas:
3 populiariausi elektronikos projektai naudojant tranzistorių D-882: 9 žingsniai
Top 3 nuostabūs elektronikos projektai naudojant D-882 tranzistorių: JLCPCB yra didžiausia PCB prototipų įmonė Kinijoje ir aukštųjų technologijų gamintojas, kuris specializuojasi greito PCB prototipo ir mažos partijos PCB gamybos srityje, turintis daugiau nei 10 metų PCB gamybos patirtį. Jie gali pasiūlyti ekonomišką sprendimą
Kaip padaryti RADAR naudojant mokslo projektą „Arduino“- Geriausi „Arduino“projektai: 5 žingsniai
Kaip padaryti RADAR naudojant mokslo projektą „Arduino“| Geriausi „Arduino“projektai: Sveiki draugai, šioje pamokoje aš jums parodysiu, kaip sukurti nuostabią radarų sistemą, sukurtą naudojant „arduino nano“, šis projektas idealiai tinka mokslo projektams, ir jūs galite lengvai tai padaryti su labai mažomis investicijomis ir galimybėmis, jei laimėti prizą yra puiku
Geresni projektai naudojant PCB: 6 žingsniai
Geresni projektai naudojant PCB: jei praleidote laiko dirbdami su elektronikos projektais, žinote, kaip tai gali būti smagu ir įdomu. Nieko nėra jaudinančio, kaip pamatyti, kaip jūsų grandinė atgyja prieš jūsų akis. Tai tampa dar įdomiau, kai jūsų projektas virsta
Penki tvarkingi maži projektai: 6 žingsniai
Penki tvarkingi maži projektai: mylėkite grandines, kurios mirksi ir skleidžia garsus, kai rodote jaunimui elektroniką. Šias penkias grandines, kurių sukūrimas užtrunka vos kelias minutes, jas lengva modifikuoti, kad būtų pakeistas mirksėjimo greitis arba laikas. Pirmoji grandinė
16x16 RGB LED skydelis „Arduino“projektai: 5 žingsniai (su paveikslėliais)
16x16 RGB LED skydelis „Arduino“projektai: Sveiki visi, aš skelbiu šį projektą, nes norėčiau, kad visi turėtų paprastą vietą žaisti su viena iš šių fantastiškų 16x16 RGB LED plokščių. Pasisemiau idėjų iš kitų projektų ir pakeičiau jas šiam projektui. Tai suteikia jums