Orodha ya maudhui:

Miradi ya Msingi ya OpenCV: Hatua 5
Miradi ya Msingi ya OpenCV: Hatua 5

Video: Miradi ya Msingi ya OpenCV: Hatua 5

Video: Miradi ya Msingi ya OpenCV: Hatua 5
Video: Распознавание номеров авто с YOLOv7 + OCR на Google Colab | Учебник ANPR/ALPR 2023 2024, Novemba
Anonim
Miradi ya Msingi ya OpenCV
Miradi ya Msingi ya OpenCV

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 ya FaceDetect
Kazi ya FaceDetect
Kazi ya FaceDetect
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

Asili Ondoa Kazi
Asili Ondoa Kazi
Asili Ondoa Kazi
Asili 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

Kazi ya VideoEdges
Kazi ya VideoEdges
Kazi ya VideoEdges
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 ya VideoBlur
Kazi ya VideoBlur
Kazi ya VideoBlur
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: