Kazalo:

Enostavno zaznavanje barv z OpenCV: 6 korakov
Enostavno zaznavanje barv z OpenCV: 6 korakov

Video: Enostavno zaznavanje barv z OpenCV: 6 korakov

Video: Enostavno zaznavanje barv z OpenCV: 6 korakov
Video: Leap Motion SDK 2024, November
Anonim
Enostavno zaznavanje barv z uporabo OpenCV
Enostavno zaznavanje barv z uporabo OpenCV

Živjo! Danes bom pokazal preprost način zaznavanja barve iz videa v živo z uporabo OpenCV in python.

V bistvu bom samo preizkusil, ali je potrebna barva v okvirju ozadja ali ne, in z uporabo modulov OpenCV bom prikril to regijo in hkrati prikazal okvir.

1. korak: Datoteke z glavo

Datoteke z glavo
Datoteke z glavo

Zdaj sem uporabil dve datoteki z glavo, in sicer cv2 in NumPy. V bistvu je cv2 knjižnica OpenCV, ki naloži vse datoteke c ++, ki so pomembne med uporabo ukazov v kodah (vsebuje vse definicije).

Numpy je knjižnica python, ki je bistvena za shranjevanje večdimenzionalne matrike. Uporabljali bomo za shranjevanje koordinat naše barvne palete.

In numpy kot np v bistvu pomaga naši kodi, da se nekoliko skrajša tako, da vsakič namesto numpy uporabi np.

2. korak: Zajem videoposnetka

Zajem videa
Zajem videa

To je pri uporabi pythona precej preprosto. Tukaj moramo samo vklopiti video snemalnik, da lahko začne snemati kadre.

Zdaj vrednost v VideoCapture označuje kamero, v mojem primeru je kamera povezana z mojim prenosnikom, torej 0.

Za sekundarno kamero lahko greste podobno kot 1 itd. VideoCapture zanj ustvari predmet.

3. korak: Zajem okvirja in določanje barve

Zajem okvirja in določanje barve
Zajem okvirja in določanje barve

Zdaj moramo tukaj narediti nekaj, da lahko zajamemo takojšen okvir videoposnetka, ki nam bo pomagal izvleči sliko, in na tem lahko delamo v skladu z zahtevami.

zanka "while" nam bo pomagala izvesti zanko do zahtevanega časa. Zdaj se "_, frame = cap.read ()" preveri veljavnost zajetega okvirja in ga shrani. "cap.read () je logična spremenljivka in vrne true, če je okvir pravilno prebran in če ne dobite okvirja, ne bo pokazal nobene napake, preprosto dobite None.

Zdaj vrstica 11 in vrstica 12 v bistvu določata obseg barv, ki jih moramo zaznati. Za to sem uporabil modro barvo.

Nadaljujete lahko s katero koli barvo, za katero morate samo vnesti vrednosti BGR. Bolje je, da z matričnimi matrikami določimo dva niza, saj zaznavanje določene barve v resničnem svetu ne bo služilo našemu namenu, temveč bomo opredelili obseg modre barve, da bo zaznaval znotraj območja.

Za to sem določil dve spremenljivki, ki shranjujeta spodnje in zgornje vrednosti BGR.

4. korak: Maskiranje in ekstrakcija

Maskiranje in ekstrakcija
Maskiranje in ekstrakcija

Zdaj prihaja glavna naloga prikrivanja okvirja in pridobivanja barve okvirja. Za prikrivanje sem uporabil vnaprej določene ukaze, ki so prisotni v knjižnici v OpenCV. V bistvu prikrivanje je postopek odstranjevanja določenega dela okvirja, tj. Odstranili bomo slikovne pike, katerih barvne BGR vrednosti ne ležijo v določenem barvnem območju, to pa naredi cv2.inRange. Nato za maskirano sliko uporabimo barvno območje, odvisno od vrednosti slikovnih pik, za to pa bomo uporabili cv2.bitwise_and, Barve bo preprosto dodelil maskiranemu območju, odvisno od vrednosti maske in barvnega območja.

Povezava za cv2. bitwise_and:

5. korak: Končno prikazano

Končno prikazano!
Končno prikazano!

Tu sem uporabil osnovni cv2.imshow () za prikaz vsakega okvirja kot slike. Ker imam okvirne podatke shranjene v spremenljivkah, jih lahko prikličem v imshow (). Tu sem prikazal vse tri okvirje, izvirne, maskirane in barvne.

Zdaj moramo zapustiti zanko while. Za to lahko preprosto implementiramo cv2.wait. Key (). V bistvu pove čakalno dobo, preden se odzove. Torej, če prenesete 0, bo čakal neskončno in 0xFF pove, da je arhitektura 64 -bitna. "ord ()" podaja znak, ki bo ob pritisku izvedel ukaz break v bloku if in bo prišel iz zanke.

Nato cap.release () zapre video snemalnik in cv2.destroyAllWindows () zapre vsa odprta okna.

Če imate kakršne koli težave, mi to sporočite.

Povezava do izvorne kode:

Priporočena: