Satura rādītājs:
- Piegādes
- 1. darbība. FaceDetect funkcija
- 2. darbība. Fona noņemšanas funkcija
- 3. darbība. VideoEdges funkcija
- 4. solis: VideoBlur funkcija
- 5. solis: uzlabojumi
Video: OpenCV pamatprojekti: 5 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:53
Šajā projektā mēs izpētām dažas OpenCV pamatfunkcijas, izmantojot 4 vienkāršus projektus, kas ietver tiešraides video straumi. Tie ir sejas atpazīšana, fona noņemšana, īpaša malu vizuāla atveidošana un izplūšanas efekta pielietošana tiešraides video straumē. Mans galvenais mērķis, izmēģinot šos projektus, bija vienkārši saslapināt kājas, izmantojot OpenCV saskarni, jo es plānoju iedziļināties datoru redzamības jomā.
Piegādes
- Dators, kurā darbojas Python
- Atvērt CV bibliotēku, Numpy bibliotēku, tkinter bibliotēku, sys bibliotēku
- Kamera, lai izveidotu savienojumu ar datoru (ja datorā tas vēl nav iekļauts)
- Programmas python fails (iekļauts šajā pamācībā)
- haarcascade xml fails (iekļauts šajā pamācībā)
1. darbība. FaceDetect funkcija
Šī funkcija parāda jūsu kameras video ar zaļiem kvadrātiem uz visām sejām, ko tā uztver. Kodā mēs izmantojam funkciju cv2. VideoCapture (), lai saglabātu mūsu uzņemto video objektā ar nosaukumu "uztveršana". CAPTURE_INDEX ir datora iestatīts skaitlis, kas atbilst jūsu kameras indeksam datora video ievades sarakstā. Ja datoram nav pievienota ārējā kamera, 0 vai 1 vajadzētu darboties.
Face_cascade objekts tiek inicializēts, izmantojot funkciju cascadeClassifier un failu "haarcascade_frontalface_default.xml", kas atrodams OpenCV github. Mēs izmantojam šo objektu, lai saglabātu sejas, kas atklātas sarakstā "sejas", kā ierakstu četrvirzienu karte, kas satur sejas x koordinātu, y koordinātu, platumu un augstumu. Pēc tam, izmantojot funkciju cv2.rectangle, mēs uzzīmējam taisnstūri, kas lieliski aptver seju
No šī video OpenCV tver daudzus attēlus mūsu cilpā, izmantojot capture.read () un saglabājot attēlu rāmī, ko nosaucām par "img". Pēc tam katrs attēls tiek interpretēts un pārveidots, kā mēs vēlamies. Vietnei faceDetect mēs padarām attēlu pelēku, izmantojot funkciju cvtColor, kas pārvērš visu pirmajā parametrā doto attēlu konkrētā attēla krāsu veidā, kas norādīts otrajā parametrā. Otrā parametra pieņemamo vērtību sarakstu var atrast tiešsaistē. Pēc tam mēs parādām attēlu logā ar nosaukumu "Sejas noteikšana", izmantojot funkciju imshow (), kas ņem virkni loga nosaukumam un attēla rāmim.
Visbeidzot, mēs gaidām, kamēr lietotājs ievadīs taustiņu q, izmantojot funkciju cv2.waitKey (). Maska 0xFF tiek izmantota 64 bitu datoriem. Pēc tam, kad lietotājs ir pabeidzis video straumi, funkcija faceDetect atbrīvo uzņemšanas objektu un pēc tam iznīcina visus citus logus, kas atvērti zem OpenCV saskarnes. Visas pārējās funkcijas ievēro līdzīgu dizaina struktūru.
2. darbība. Fona noņemšanas funkcija
Šī funkcija mēģina noņemt mūsu video fona daļu un atstāt tikai priekšplāna attēlu. Dažās kamerās tas var nedarboties, jo tajās tiek izmantota apgaismojuma regulēšanas funkcija, kas tiek aktivizēta, kad rāmī iekļūstot dažādiem objektiem/ fokusiem. Ja jūsu backgroundRemove funkcija nedarbojas, nesatraucieties- tā varētu būt tikai jūsu kamera!
Lai izmantotu šo funkciju, atkāpieties no kameras rāmja un nospiediet taustiņu "d", lai uzņemtu fona attēlu. Ir svarīgi, lai fonā nebūtu kustīgu objektu, kurus vēlaties uzņemt. Pēc tam mēs varam atgriezties kameras rāmī. Ja funkcija darbojās, lietotājam vajadzētu redzēt sevi tikai funkcijas video straumē. Jebkurš troksnis/melni plankumi priekšplāna attēlā var būt saistīti ar kameras apgaismojuma pielāgošanu. Lai uzņemtu citu fonu, nospiediet taustiņu "r", lai atkārtoti inicializētu, pēc tam vēlreiz nospiediet "d".
Dažas galvenās šīs funkcijas atņemšanas iespējas ir “karoga” Būla vērtība, kas tiek pacelta uzreiz, kad lietotājs nospiež pogu d. Tas uzņem fonu un ļauj mums to noņemt no videoklipa, ko straumē šī funkcija. Mūsu mērķis ir saglabāt fona attēlu ref_img, lai mēs varētu to atšķirt no priekšplāna attēla, kas fiksē jebkuru kustīgu objektu. Mēs izmantojam funkciju cv2.subtract (), lai atņemtu priekšējo attēlu no fona attēla un otrādi, pēc tam uzreiz pēc tam atceltu visas niecīgās atšķirības abos attēlos. Fons ir aptumšots.
Fgmaska tiek veidota, izmantojot atšķirību starp šiem diviem attēliem, un pēc tam tiek piemērota funkciju video straumei, izmantojot funkciju OpenCV cv2.bitwise_and ().
3. darbība. VideoEdges funkcija
Šī funkcija atgriež mūsu tiešraides video straumi, bet nosakāmās malas tiek padarītas baltas, bet viss pārējais ir aptumšots. Šo funkciju atšķir no citām funkcijām mūsu sākotnējā video pārveidošana no RBG formāta uz HSV, kas apzīmē nokrāsu, piesātinājumu un variācijas- atšķirīgu gaismas un krāsu apstrādes metodi no video. Izmantojot šo metodi, mēs varam vieglāk atšķirt kontūras videoklipā, piemērojot filtru (red_low to red_high).
Canny Edge Detection tiek izmantota, lai noteiktu attēla malas. Tas pieņem pelēkas skalas attēlu kā ievadi un izmanto daudzpakāpju algoritmu.
4. solis: VideoBlur funkcija
Šo funkciju izmanto, lai mūsu video straumei pievienotu izplūdušu efektu. Funkcija vienkārša uz mūsu rāmja izsauc funkciju GaussianBlur cv2. Plašāku informāciju par funkciju gaussianBlur varat atrast šeit:
opencv-python-tutroals.readthedocs.io/en/l…
5. solis: uzlabojumi
Visjutīgākā funkcija šajā projektā ir fona noņemšanas funkcija, jo tai ir jāizmanto kamera, kurai nav apgaismojuma regulēšanas funkcijas. OpenCV bibliotēkā var būt labāks funkciju kopums, kas var ņemt vērā šo apgaismojuma pielāgošanu un vienmērīgi noņemt fonu (līdzīgi zaļam ekrānam).
Mēs varētu izmantot arī citas sejas noteikšanas funkcijas, kas var radīt objektus ar lielāku funkcionalitāti, izņemot tikai (x, y) koordinātu atgriešanu. Varbūt sejas atpazīšanas programmu ar spēju atcerēties sejas nebūtu pārāk grūti īstenot.
Izplūšanas funkciju var vairāk pielāgot, izmantojot lietotāja intuitīvu vadību. Piemēram, lietotājs var vēlēties pielāgot izplūšanas efekta intensitāti vai atlasīt konkrētu kadra apgabalu, lai aizmiglotu.
Ieteicams:
QR koda skeneris, izmantojot OpenCV programmā Python: 7 soļi
QR koda skeneris, izmantojot OpenCV programmā Python: Mūsdienu pasaulē mēs redzam, ka QR kods un svītrkods tiek izmantoti gandrīz visur, sākot no produkta iepakojuma līdz tiešsaistes maksājumiem, un mūsdienās mēs redzam QR kodus pat restorānā, lai redzētu izvēlni. šaubos, ka tagad tā ir lielā doma. Bet vai jūs kādreiz esat nožēlojis
Reāllaika Rubika kuba risinātājs ar aizsietām acīm, izmantojot Raspberry Pi un OpenCV: 4 soļi
Reāllaika Rubika kuba risinātājs ar aizsietām acīm, izmantojot Raspberry Pi un OpenCV: Šī ir Rubika kuba rīka otrā versija, kas paredzēta risināšanai ar aizsietām acīm. 1. versiju izstrādāja javascript, jūs varat redzēt projektu RubiksCubeBlindfolded1Atšķirībā no iepriekšējās, šī versija izmanto OpenCV bibliotēku, lai noteiktu krāsas un e
Vision 4all - Sistema Visão Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E Aplicativo Android: 6 soļi
Vision 4all - Sistema Visão Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E Android lietojumprogramma: DESCRI Ç Ã dar autonomia para deficientes visuais se locomoverem em ambientes iekštelpu como casas vai iepirkšanās centri un lidostas.A locomo ç ã o em ambientes j á mapeados pode ou n ã o s
Colec.te - Lixeira Inteligente Qualcomm Dragonboard 410c + OpenCV: 7 soļi
Colec.te - Lixeira Inteligente Qualcomm Dragonboard 410c + OpenCV: A nossa lixeira inteligente consiste na separa ç ã o autom á tica do lixo. Atrav tīmekļa kamera, identifikators vai tipa de lixo e o noguldījums bez nodalījuma pietiekamības para posteriormente ser reciclado
Attēlu apstrāde ar Raspberry Pi: OpenCV un attēla krāsu atdalīšanas instalēšana: 4 soļi
Attēlu apstrāde ar Raspberry Pi: OpenCV un attēla krāsu atdalīšanas instalēšana: šī ziņa ir pirmā no vairākām attēlu apstrādes apmācībām, kas jāievēro. Mēs rūpīgāk aplūkojam attēla pikseļus, iemācāmies instalēt OpenCV uz Raspberry Pi, kā arī rakstām testa skriptus, lai uzņemtu attēlu, kā arī