Sisukord:

Lihtne värvide tuvastamine OpenCV abil: 6 sammu
Lihtne värvide tuvastamine OpenCV abil: 6 sammu

Video: Lihtne värvide tuvastamine OpenCV abil: 6 sammu

Video: Lihtne värvide tuvastamine OpenCV abil: 6 sammu
Video: Распознавание номеров авто с YOLOv7 + OCR на Google Colab | Учебник ANPR/ALPR 2023 2024, Juuni
Anonim
Lihtne värvide tuvastamine OpenCV abil
Lihtne värvide tuvastamine OpenCV abil

Tere! Täna näitan lihtsat meetodit värvi tuvastamiseks reaalajas videost OpenCV ja python abil.

Põhimõtteliselt katsetan lihtsalt, kas vajalik värv on taustraamis olemas või mitte, ja OpenCV moodulite abil maskeerin selle piirkonna ja kuvan samal ajal kaadri.

Samm: päisefailid

Päisefailid
Päisefailid

Nüüd olen siin kasutanud kahte päisefaili, nimelt cv2 ja NumPy. Põhimõtteliselt on cv2 OpenCV teek, mis laadib kõik koodides käskude kasutamise ajal olulised c ++ failid (see sisaldab kõiki määratlusi).

Ja Numpy on püütoniteek, mis on mitmemõõtmelise massiivi salvestamiseks hädavajalik. Kasutame oma värvivaliku koordinaatide salvestamiseks.

Ja numpy kui np aitab meie koodil põhimõtteliselt natuke lühendada, kasutades numpy asemel iga kord np.

2. samm: video jäädvustamine

Video jäädvustamine
Video jäädvustamine

See on pythoni kasutamisel üsna lihtne. Siin peame lihtsalt videosalvesti sisse lülitama, et see saaks hakata kaadreid salvestama.

Nüüd näitab VideoCapture'i sees olev väärtus kaamerat, minu puhul on kaamera sülearvutiga ühendatud, seega 0.

Võite minna sarnaselt teise kaameraga 1 ja nii edasi. VideoCapture loob selle jaoks objekti.

3. samm: raami jäädvustamine ja värvi määramine

Raami jäädvustamine ja värvi määramine
Raami jäädvustamine ja värvi määramine

Nüüd peame siin midagi ette võtma, et saaksime jäädvustada video kohese kaadri, mis aitab meil pilti ekstraheerida ja saame seda vastavalt vajadusele tööd teha.

silmus "samas" aitab meil nõutava ajani käivitada. Nüüd kasutatakse "_, frame = cap.read ()" kaadri kehtivuse kontrollimiseks ja salvestamiseks. "cap.read () on loogiline muutuja ja tagastab tõese, kui kaadrit loetakse õigesti ja kui te ei saa ühtegi kaadrit, ei näita see ühtegi viga, saate lihtsalt nupu Puudub.

Nüüd määravad jooned 11 ja 12 põhimõtteliselt värvivahemiku, mida peame tuvastama. Selleks olen harjunud sinise värviga.

Võite jätkata mis tahes värviga, mille jaoks peate lihtsalt sisestama selle konkreetse värvi BGR väärtused. Parem on määratleda kaks massiivi, kasutades numbrimassiive, kuna konkreetse värvi tuvastamine reaalses maailmas ei täida meie eesmärki, vaid määratleme sinise värvi vahemiku, et see tuvastaks selle vahemiku.

Selleks olen määratlenud kaks muutujat, mis salvestavad madalamad BGR väärtused ja ülemised BGR väärtused.

Samm: maskeerimine ja ekstraheerimine

Maskeerimine ja ekstraheerimine
Maskeerimine ja ekstraheerimine

Nüüd tuleb siin peamine ülesanne - raami maskeerimine ja raami värvi väljavõtmine. Maskeerimiseks kasutasin OpenCV raamatukogus olevaid etteantud käske. Põhimõtteliselt on maskeerimine mõne kaadriosa eemaldamise protsess, st eemaldame pikslid, mille BGR -i värvi väärtused ei kuulu määratletud värvivahemikku, ja seda teeb cv2.inRange. Hiljem rakendame maskeeritud pildile värvivahemikku sõltuvalt piksliväärtustest ja selleks kasutame cv2.bitwise_and. See määrab varjatud piirkonnale värvid sõltuvalt maskist ja värvivahemiku väärtustest.

Cv2 link. bitwise_and:

Samm: lõpuks kuvatakse

Lõpuks kuvatakse!
Lõpuks kuvatakse!

Siin olen kasutanud põhilist cv2.imshow () iga kaadri kuvamiseks pildina. Kuna kaadriandmed on salvestatud muutujatesse, saan need alla laadida kujul imshow (). Siin olen näidanud kõiki kolme raami, originaali, maskeeritud ja värvilist.

Nüüd peame samasilmusest väljuma. Selleks saame lihtsalt rakendada cv2.wait. Key (). Põhimõtteliselt ütleb see ooteaja enne vastamist. Nii et kui läbite 0, ootab see lõpmatult ja 0xFF ütleb, et arhitektuur on 64 -bitine. "ord ()" määrab märgi, mis vajutamisel täidab käsu break, kui plokk, ja see väljub tsüklist.

Seejärel sulgeb cap.release () videosalvesti ja cv2.destroyAllWindows () sulgeb kõik avatud aknad.

Kui teil on probleeme, andke mulle sellest teada.

Link lähtekoodile:

Soovitan: