Turinys:

„OpenCV Basic“projektai: 5 žingsniai
„OpenCV Basic“projektai: 5 žingsniai

Video: „OpenCV Basic“projektai: 5 žingsniai

Video: „OpenCV Basic“projektai: 5 žingsniai
Video: Automatic sorting conveyor belt - Graduation project 2017 - Mechatronics | Egypt 2024, Lapkritis
Anonim
„OpenCV“pagrindiniai projektai
„OpenCV“pagrindiniai projektai

Š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

„FaceDetect“funkcija
„FaceDetect“funkcija
„FaceDetect“funkcija
„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

Fono pašalinimo funkcija
Fono pašalinimo funkcija
Fono pašalinimo funkcija
Fono pašalinimo 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

„VideoEdges“funkcija
„VideoEdges“funkcija
„VideoEdges“funkcija
„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

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