Orodha ya maudhui:

Kugundua Rangi Rahisi Kutumia OpenCV: Hatua 6
Kugundua Rangi Rahisi Kutumia OpenCV: Hatua 6

Video: Kugundua Rangi Rahisi Kutumia OpenCV: Hatua 6

Video: Kugundua Rangi Rahisi Kutumia OpenCV: Hatua 6
Video: JINSI YA KUIJUA NYOTA YAKO KWA KUTUMIA TAREHE NA MWEZI WAKO WA KUZALIWA 2024, Juni
Anonim
Kugundua Rangi Rahisi Kutumia OpenCV
Kugundua Rangi Rahisi Kutumia OpenCV

Halo! Leo nitaonyesha njia rahisi ya kugundua rangi kutoka kwa video ya moja kwa moja kwa kutumia OpenCV na chatu.

Kimsingi nitajaribu tu rangi inayohitajika iko kwenye fremu ya nyuma au la na kutumia moduli za OpenCV nitafunika mkoa huo na wakati huo huo nionyeshe fremu.

Hatua ya 1: Faili za Kichwa

Faili za Kichwa
Faili za Kichwa

Sasa hapa nimetumia faili mbili za kichwa ambazo ni cv2 na NumPy. Kimsingi cv2 ni maktaba ya OpenCV ambayo hupakia faili zote za c ++ ambazo ni muhimu wakati wa kutumia amri kwenye nambari (ina ufafanuzi wote).

Na Numpy ni maktaba ya chatu ambayo ni muhimu kwa kuhifadhi safu ya anuwai. Tutatumia kuhifadhi uratibu wa anuwai ya rangi.

Na numpy kama np kimsingi inasaidia nambari yetu kufupisha kidogo kwa kutumia np kila wakati badala ya numpy.

Hatua ya 2: Kukamata Video

Kukamata Video
Kukamata Video

Hii ni rahisi sana wakati unatumia chatu. Hapa tunahitaji tu kuwasha kinasa video ili iweze kuanza kurekodi muafaka.

Sasa thamani ndani ya VideoCapture inaonyesha kamera, kwa upande wangu kamera imeunganishwa na kompyuta yangu ndogo, kwa hivyo 0.

Unaweza kwenda vile vile kwa 1 kwa kamera ya sekondari na kadhalika. VideoCapture inaunda kitu kwa ajili yake.

Hatua ya 3: Kukamata Sura na Kufafanua Rangi

Kukamata Fremu na Kufafanua Rangi
Kukamata Fremu na Kufafanua Rangi

Sasa hapa lazima tufanye kitu ili tuweze kunasa fremu ya papo hapo ya video ambayo itatusaidia kutoa picha na tunaweza kuishughulikia kama kwa mahitaji.

"wakati" kitanzi kitatusaidia kuendesha kitanzi kwa wakati wetu wa mahitaji. Sasa "_, frame = cap.read ()" hutumiwa kuangalia uhalali wa Sura iliyonaswa na kuihifadhi. cap.read () ni tofauti ya boolean na inarudi kweli ikiwa sura inasomwa kwa usahihi na ikiwa hautapata fremu haitaonyesha kosa lolote, utapata Hakuna tu.

Sasa mstari wa 11 na mstari wa 12 kimsingi hufafanua anuwai ya rangi tunayohitaji kugundua. Kwa hili, nimetumia rangi ya hudhurungi.

Unaweza kuendelea na rangi yoyote kwa hiyo unahitaji kuchapa tu maadili ya BGR kwa rangi hiyo. Ni bora kufafanua safu mbili kwa kutumia safu zisizo na nukta kwani kugundua rangi fulani katika ulimwengu wa kweli hakutatimiza kusudi letu badala yake tutafafanua anuwai ya rangi ya hudhurungi ili iweze kugundua kati ya anuwai.

Kwa hili, nimeelezea vigeuzi viwili kuhifadhi viwango vya chini vya BGR na maadili ya juu ya BGR.

Hatua ya 4: Kuficha na Kutoa

Kuficha na Kutoa
Kuficha na Kutoa

Sasa inakuja kazi kuu ya kufunika sura na kuchora rangi ya fremu. Nilitumia maagizo yaliyofafanuliwa yaliyopo kwenye maktaba katika OpenCV kufanya masking. Kimsingi kuficha ni mchakato wa kuondoa sehemu fulani ya fremu, kwa hivyo tutaondoa saizi ambazo rangi ya BGR inathamini ambayo haiko katika safu ya rangi iliyoainishwa na hii inafanywa na cv2.inRange. Baadaye, tunatumia safu ya rangi kwenye picha iliyofichwa kulingana na maadili ya pikseli na kwa hili, tutatumia cv2.bitwise_and, Itatoa tu rangi kwa mkoa uliofichwa kulingana na maadili ya maski na rangi.

Kiungo cha cv2. kidogo_na:

Hatua ya 5: Mwishowe Inaonyesha

Mwishowe Inaonyesha!
Mwishowe Inaonyesha!

Hapa nimetumia msingi cv2.imshow () kwa kuonyesha kwa kila fremu kama picha. Kwa kuwa nina data ya sura iliyohifadhiwa katika vigeuzi ninaweza kuzipata katika imshow (). Hapa nimeonyesha fremu zote tatu, asili, iliyofichwa, na yenye rangi.

Sasa tunapaswa kutoka kutoka kitanzi cha wakati. Kwa hili, tunaweza kutekeleza tu cv2.wait. Key (). Kimsingi inaelezea wakati wa kusubiri kabla ya kujibu. Kwa hivyo ukipitisha 0 itasubiri sana na 0xFF inaambia usanifu ni 64bit. "ord ()" inabainisha herufi ambayo ikibonyezwa itafanya amri ya kuvunja ikiwa kizuizi na kitatoka kitanzi.

Kisha cap.release () inafunga kinasa video na cv2.destroyAllWindows () inafunga windows zote zilizofunguliwa.

Ikiwa una shida yoyote, tafadhali nijulishe.

Unganisha kwa nambari ya chanzo:

Ilipendekeza: