Orodha ya maudhui:
- Vifaa
- Hatua ya 1: Kazi ya FaceDetect
- Hatua ya 2: Usuli Ondoa Kazi
- Hatua ya 3: Kazi ya VideoEdges
- Hatua ya 4: Kazi ya VideoBlur
- Hatua ya 5: Maboresho
Video: Miradi ya Msingi ya OpenCV: Hatua 5
2024 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2024-01-30 12:50
Katika mradi huu, tunachunguza utendakazi wa msingi wa OpenCV kupitia miradi 4 rahisi inayohusisha mkondo wa video ya moja kwa moja. Hizi ni utambuzi wa uso, kuondolewa kwa mandharinyuma, utoaji maalum wa kuona wa kingo, na kutumia athari ya ukungu kwa mkondo wa video ya moja kwa moja. Kusudi langu kuu la kujaribu miradi hii ilikuwa ni kunyoosha miguu yangu na kiolesura cha OpenCV, kwani nina mpango wa kuchunguza zaidi katika uwanja wa maono ya kompyuta
Vifaa
- Kompyuta inayoendesha Python
- Fungua maktaba ya CV, maktaba ya Numpy, maktaba ya tkinter, maktaba ya sys
- Kamera ya kuunganisha kwenye kompyuta (ikiwa kompyuta haijumuishi moja tayari)
- Faili ya chatu ya Programu (imejumuishwa katika hii inayoweza kufundishwa)
- haarcascade xml faili (imejumuishwa katika hii inayoweza kufundishwa)
Hatua ya 1: Kazi ya FaceDetect
Kazi hii inaonyesha video ya kamera yako na mraba wa kijani kwenye nyuso zozote ambazo huchukua. Katika nambari, tunatumia kazi ya cv2. VideoCapture () kuhifadhi video ambayo tunateka katika kitu kinachoitwa "kukamata". CAPTURE_INDEX ni nambari iliyowekwa na kompyuta yako ambayo inalingana na faharisi ya kamera yako katika orodha ya uingizaji wa video ya kompyuta. Ikiwa huna kamera ya nje iliyounganishwa kwenye kompyuta yako, 0 au 1 inapaswa kufanya kazi.
Kitu cha uso_cascade kimeanzishwa kwa kutumia kazi ya CascadeClassifier na faili ya "haarcascade_frontalface_default.xml" inayopatikana kwenye OpenCV github. Tunatumia kitu hiki kuhifadhi nyuso zilizoonekana kwenye orodha "nyuso" kama kiingilio cha njia nne zilizoshikilia nyuso x kuratibu, kuratibu y, upana na urefu. Kisha tunachora mstatili ambao hufunika kabisa uso kwa kutumia kazi ya cv2
Kutoka kwa video hii, OpenCV inachukua picha nyingi katika kitanzi chetu wakati wa kutumia capture.read () na kuhifadhi picha kwenye fremu tuliyoiita "img". Kila picha inatafsiriwa na kurekebishwa kama tunavyotaka. Kwa usoDetect, tunafanya picha kijivu kutumia cvtColor kazi ambayo inabadilisha picha yoyote iliyotolewa katika parameter ya kwanza kwa aina fulani ya rangi ya picha iliyoainishwa katika parameter ya pili. Orodha ya maadili yanayokubalika kwa parameter ya pili inaweza kupatikana mkondoni. Kisha tunaonyesha picha hiyo kwenye dirisha inayoitwa "Kugundua uso" kwa kutumia kazi ya imshow () ambayo inachukua kamba kwa jina la dirisha na sura ya picha kuonyeshwa.
Mwishowe tunasubiri mtumiaji aingie kitufe cha q kutumia kazi ya cv2.waitKey (). Mask ya 0xFF hutumiwa kama mkutano wa kompyuta 64 kidogo. Baada ya mtumiaji kumaliza mkondo wa video, kazi ya usoDetect inaachilia kitu cha kukamata kisha inaharibu windows nyingine yoyote iliyofunguliwa chini ya kiolesura cha OpenCV. Kazi zingine zote zinafuata muundo sawa wa muundo.
Hatua ya 2: Usuli Ondoa Kazi
Kazi hii inajaribu kuondoa sehemu ya nyuma ya video yetu na kuacha picha ya mbele tu. Inaweza isifanye kazi kwenye kamera zingine, kwani hutumia kazi ya kurekebisha taa ambayo imeamilishwa wakati vitu / foksi tofauti zinaingia kwenye fremu. Ikiwa usuli wako Ondoa kazi haifanyi kazi, usifadhaike- inaweza kuwa kamera yako tu!
Kutumia kazi hii, ondoka kwenye fremu ya kamera na bonyeza kitufe cha "d" ili kunasa picha ya mandharinyuma. Ni muhimu kwamba hakuna vitu vya kusonga nyuma unavyotaka kukamata. Kisha, tunaweza kurudi kwenye fremu ya kamera. Ikiwa kazi ilifanya kazi, mtumiaji anapaswa kujiona tu kwenye mkondo wa video ya kazi. Kelele yoyote / matone meusi kwenye picha ya mbele inaweza kuwa matokeo ya marekebisho ya taa ya kamera. Ili kunasa mandharinyuma mengine, bonyeza kitufe cha "r" ili kuanzisha tena, kisha bonyeza "d" tena.
Njia zingine muhimu za kuchukua kazi hii ni matumizi ya boolean ya "bendera" ambayo hufufuliwa papo hapo mtumiaji anapobonyeza kitufe cha d. Hii inakamata mandharinyuma na kuturuhusu kuiondoa kwenye video ambayo hutiririka na kazi. Tunakusudia kuhifadhi picha ya usuli katika ref_img ili tuweze kuitofautisha na picha ya mbele, ambayo inakamata kitu chochote kinachotembea. Tunatumia kazi ya cv2.subtract () kutoa picha ya mbele kutoka kwa picha ya nyuma na kinyume chake, halafu futa tofauti zozote za minuscule kwenye picha hizo mbili mara baada ya. Mandharinyuma imezimwa.
Fgmask inafanywa kwa kutumia tofauti kati ya picha hizi mbili na kisha kutumika kwa mkondo wa video wa kazi ukitumia kazi ya OpenCV cv2.bitwise_and ().
Hatua ya 3: Kazi ya VideoEdges
Utendakazi huu unarudisha mkondo wetu wa video ya moja kwa moja, lakini kingo zinazoweza kugunduliwa hutolewa nyeupe wakati kila kitu kingine kimefifishwa. Kinachotofautisha kazi hii na kazi zingine ni ubadilishaji wa video yetu ya asili kutoka kwa muundo wa RBG hadi HSV, ambayo inasimama kwa hue, kueneza na kutofautisha- njia tofauti ya kusindika nuru na rangi kutoka kwa video. Kwa njia hii, tunaweza kutofautisha kwa urahisi muhtasari kwenye video kwa kutumia kichujio (red_low to red_high).
Ugunduzi wa Canny Edge hutumiwa kugundua kingo kwenye picha. Inakubali picha ya kijivu kama pembejeo na hutumia hesabu nyingi.
Hatua ya 4: Kazi ya VideoBlur
Kazi hii hutumiwa kuongeza athari ya ukungu kwenye mkondo wetu wa video. Kazi rahisi inaita kazi ya cv2 ya GaussianBlur kwenye fremu yetu. Habari zaidi juu ya kazi ya gaussianBlur inaweza kupatikana hapa:
opencv-python-tutroals.readthedocs.io/en/l…
Hatua ya 5: Maboresho
Kazi nyeti zaidi katika mradi huu ni kazi ya kuondoa mandharinyuma, kwani inahitaji matumizi ya kamera ambayo haina utendaji wa kurekebisha taa. Kunaweza kuwa na seti bora ya kazi ndani ya maktaba ya OpenCV ambayo inaweza kuhesabu marekebisho haya ya taa na kuondoa vizuri nyuma (sawa na skrini ya kijani).
Tunaweza pia kutumia kazi zingine za kugundua uso ambazo zinaweza kutoa vitu vyenye utendaji zaidi ya kuratibu tu (x, y). Labda mpango wa utambuzi wa uso na uwezo wa kukumbuka nyuso usingekuwa ngumu sana kutekeleza.
Kazi ya blur inaweza kufanywa kuwa ya upendeleo zaidi kupitia udhibiti wa angavu na mtumiaji. Kwa mfano, mtumiaji anaweza kutaka kurekebisha ukubwa wa athari ya kufifia au kuchagua eneo maalum ndani ya fremu ili kutia ukungu.
Ilipendekeza:
Jinsi ya kutengeneza RADAR Kutumia Arduino kwa Mradi wa Sayansi Miradi Bora ya Arduino: Hatua 5
Jinsi ya kutengeneza RADAR Kutumia Arduino kwa Mradi wa Sayansi Miradi bora ya Arduino: Halo marafiki, katika hii nitafundishwa nitakuonyesha jinsi ya kutengeneza mfumo mzuri wa rada uliojengwa kwa kutumia arduino nano mradi huu ni mzuri kwa miradi ya sayansi na unaweza kuifanya kwa urahisi na uwekezaji mdogo na nafasi ikiwa tuzo ya kushinda ni nzuri kwa
Pokea Arifa za Barua pepe Kutoka kwa Miradi Yako ya IoT: Hatua 6
Pokea Arifa za Barua pepe Kutoka kwa Miradi Yako ya IoT: Arifa za barua pepe za Programu inayounganisha miradi yako ya IoT kwa Adafruit IO na IFTTT. Nimechapisha miradi kadhaa ya IoT. Natumahi umewaona, ikiwa sivyo nakualika kwenye wasifu wangu na uwaangalie. Nilitaka kupokea arifa wakati wa kutofautisha
Miradi ya Vanity ya DIY katika Hatua Rahisi (kutumia Taa za Ukanda wa LED): Hatua 4
Miradi ya Vanity ya DIY katika Hatua Rahisi (kutumia Taa za Ukanda wa LED): Katika chapisho hili, nilitengeneza Mirror ya Vanity ya DIY kwa msaada wa vipande vya LED. Ni kweli baridi na lazima ujaribu pia
Hack Laptop Touchpad Baridi kwa Miradi ya Arduino!: Hatua 18 (na Picha)
Hack Laptop Touchpad kwa Miradi ya Arduino!: Wakati wa nyuma, wakati nilikuwa nikitafakari karibu na kitufe cha kugusa cha PS / 2 na mdhibiti mdogo wa Arduino, niligundua kuwa viunganisho vyake viwili vya bodi vinaweza kutumika kama pembejeo za dijiti. Katika Agizo hili, wacha tujifunze jinsi tunaweza kutumia nyongeza ya pedi ya kugusa ya PS / 2
Miradi 10 ya Msingi ya Arduino kwa Kompyuta! Fanya angalau Miradi 15 Ukiwa na Bodi Moja !: Hatua 6
Miradi 10 ya Msingi ya Arduino kwa Kompyuta! Fanya angalau Miradi 15 Ukiwa na Bodi Moja !: Mradi wa Arduino & Bodi ya Mafunzo; Inajumuisha miradi 10 ya msingi ya Arduino. Nambari zote za chanzo, faili ya Gerber na zaidi. Hakuna SMD! Uuzaji rahisi kwa kila mtu. Vipengele rahisi vinavyoweza kutolewa na vinavyoweza kubadilishwa. Unaweza kufanya angalau miradi 15 kwa bo moja