Satura rādītājs:

Vienkārša krāsu noteikšana, izmantojot OpenCV: 6 soļi
Vienkārša krāsu noteikšana, izmantojot OpenCV: 6 soļi

Video: Vienkārša krāsu noteikšana, izmantojot OpenCV: 6 soļi

Video: Vienkārša krāsu noteikšana, izmantojot OpenCV: 6 soļi
Video: Leap Motion SDK 2024, Jūnijs
Anonim
Vienkārša krāsu noteikšana, izmantojot OpenCV
Vienkārša krāsu noteikšana, izmantojot OpenCV

Sveiki! Šodien es parādīšu vienkāršu metodi krāsu noteikšanai no tiešraides video, izmantojot OpenCV un python.

Būtībā es tikai pārbaudīšu, vai vajadzīgā krāsa ir fona rāmī vai nav, un, izmantojot OpenCV moduļus, es maskēšu šo reģionu un vienlaikus parādīšu rāmi.

1. darbība: galvenes faili

Galvenes faili
Galvenes faili

Tagad šeit esmu izmantojis divus galvenes failus, proti, cv2 un NumPy. Būtībā cv2 ir OpenCV bibliotēka, kurā tiek ielādēti visi c ++ faili, kas ir svarīgi, vienlaikus izmantojot komandas kodos (tajā ir visas definīcijas).

Un Numpy ir pitona bibliotēka, kas ir būtiska daudzdimensiju masīva glabāšanai. Mēs izmantosim savu krāsu diapazona koordinātu saglabāšanai.

Un numpy kā np būtībā palīdz mūsu kodam nedaudz saīsināties, katru reizi lietojot np, nevis numpy.

2. darbība: video uzņemšana

Video uzņemšana
Video uzņemšana

Izmantojot python, tas ir diezgan vienkārši. Šeit mums vienkārši jāieslēdz video ierakstītājs, lai tas varētu sākt ierakstīt kadrus.

Tagad vērtība VideoCapture iekšpusē norāda kameru, manā gadījumā kamera ir savienota ar manu klēpjdatoru, tātad 0.

Varat izmantot līdzīgi 1 sekundārajai kamerai un tā tālāk. VideoCapture izveido tam objektu.

3. darbība: kadra uzņemšana un krāsas noteikšana

Rāmja uzņemšana un krāsas noteikšana
Rāmja uzņemšana un krāsas noteikšana

Tagad šeit mums ir jādara kaut kas, lai mēs varētu uzņemt tūlītēju video kadru, kas mums palīdzēs iegūt attēlu, un mēs varam strādāt pie tā atbilstoši prasībām.

cilpa "while" palīdzēs mums izpildīt ciklu atbilstoši mūsu prasībām. Tagad "_, frame = cap.read ()" tiek izmantots, lai pārbaudītu uzņemtā kadra derīgumu un to saglabātu. "cap.read () ir Būla mainīgais un atgriež patiesu, ja rāmis ir pareizi nolasīts un, ja jūs nesaņemat kadrus, tas nerādīs nekādas kļūdas, jūs vienkārši saņemsit Nav.

Tagad 11. un 12. līnija pamatā nosaka krāsu diapazonu, kas mums jānosaka. Šim nolūkam esmu pieradis pie zilās krāsas.

Jūs varat turpināt ar jebkuru krāsu, kas jums vienkārši jāievada šīs krāsas BGR vērtības. Labāk ir definēt divus masīvus, izmantojot numpy masīvus, jo noteiktas krāsas noteikšana reālajā pasaulē nedos mūsu mērķi, bet mēs definēsim zilās krāsas diapazonu tā, lai tas noteiktu diapazonā.

Šim nolūkam esmu definējis divus mainīgos, kas saglabā zemākās BGR vērtības un augšējās BGR vērtības.

4. solis: maskēšana un ekstrakcija

Maskēšana un ekstrakcija
Maskēšana un ekstrakcija

Tagad šeit ir galvenais uzdevums - maskēt rāmi un iegūt rāmja krāsu. Maskēšanai izmantoju iepriekš definētās komandas, kas atrodas OpenCV bibliotēkā. Būtībā maskēšana ir daļa no kadra daļas noņemšanas, t.i., mēs noņemsim tos pikseļus, kuru krāsas BGR vērtības neatbilst noteiktajam krāsu diapazonam, un to veic cv2.inRange. Pēc tam mēs maskējamam attēlam piemērojam krāsu diapazonu atkarībā no pikseļu vērtībām, un šim nolūkam mēs izmantosim cv2.bitwise_and, tas vienkārši piešķirs krāsas maskētajam reģionam atkarībā no maskas un krāsu diapazona vērtībām.

Cv2 saite. bitwise_and:

5. solis: beidzot tiek parādīts

Beidzot parādās!
Beidzot parādās!

Šeit es esmu izmantojis pamata cv2.imshow (), lai katru rāmi parādītu kā attēlu. Tā kā kadru dati ir saglabāti mainīgajos, es varu tos izgūt imshow (). Šeit esmu parādījis visus trīs rāmjus - oriģinālus, maskētus un krāsainus.

Tagad mums jāiziet no cikla cikla. Šim nolūkam mēs varam vienkārši ieviest cv2.wait. Key (). Būtībā tas norāda gaidīšanas laiku pirms atbildes. Tātad, ja nokārtojat 0, tas gaidīs bezgalīgi, un 0xFF norāda, ka arhitektūra ir 64 bitu. "ord ()" norāda rakstzīmi, kas, nospiežot, izpildīs pārtraukuma komandu, ja bloks, un tā iznāks no cilpas.

Tad cap.release () aizver video ierakstītāju un cv2.destroyAllWindows () aizver visus atvērtos logus.

Ja jums ir kāda problēma, lūdzu, dariet man to zināmu.

Saite uz avota kodu:

Ieteicams: