Obsah:

Detekcia farieb v Pythone pomocou OpenCV: 8 krokov
Detekcia farieb v Pythone pomocou OpenCV: 8 krokov

Video: Detekcia farieb v Pythone pomocou OpenCV: 8 krokov

Video: Detekcia farieb v Pythone pomocou OpenCV: 8 krokov
Video: Leap Motion SDK 2024, November
Anonim
Image
Image

Ahoj! Tento návod sa používa na návod, ako extrahovať konkrétnu farbu z obrázku v pythone pomocou knižnice openCV. Ak ste v tejto technike nováčik, nebojte sa, na konci tejto príručky budete môcť naprogramovať svoj vlastný program na detekciu farieb.

Nasledujú funkcie alebo môžeme povedať techniky, ktoré sa naučíte, 1. Ako čítať obrázok

2. Ako vytvoriť lišty

3. Ako upraviť hodnotu odtieňa, sýtosti a hodnoty obrázka pomocou panelov stopy

4. A potom bude váš konečný výstup

Môžete si pozrieť video z výstupu, ktorý som pripojil nižšie.

Začnime teda

Zásoby

  • Python 3
  • knižnica openCV
  • numpy knižnica

Krok 1: Import knižníc

Import knižníc
Import knižníc

Obrázok je zo žltého ferrari, ako je znázornené, a naprogramujeme, aby sme z tohto obrázku extrahovali iba žltú farbu

Prvým krokom bude import našich knižníc

1. Vrátane knižnice openCV. V pythone sa to nazýva cv2

2. Vrátane numpy knižnice ako np. „Ako“nám umožňuje znecitlivieť ako np, takže nie je potrebné písať znova a znova

Krok 2: Vytvorenie panelov stopy

Vytváranie vodiacich líšt
Vytváranie vodiacich líšt

Track Bars sa vytvárajú na úpravu hodnoty Hue, Saturation a Value na obrázku.

cv2.namedWindow ("TrackBars") Tento riadok kódu sa používa na vytvorenie nového výstupného okna a názov okna je uvedený ako TrackBars (Môžete dať ľubovoľné meno)

cv2.resizeWindow ("TrackBars", 600, 250) Táto funkcia sa používa na zmenu veľkosti okna. "TrackBars" je pre ktoré okno chcete zmeniť veľkosť, pretože som chcel zmeniť veľkosť okna TrackBars Napísal som to meno. Nasledujú dve celé čísla. Tieto dve celé čísla sú šírka a výška. S týmito dvoma číslami sa môžete pohrať a zmeniť veľkosť

Krok 3: Vytvorenie trackbarov pre odtieň, sýtosť a hodnotu

Vytváranie trackbarov pre odtieň, sýtosť a hodnotu
Vytváranie trackbarov pre odtieň, sýtosť a hodnotu
Vytváranie trackbarov pre odtieň, sýtosť a hodnotu
Vytváranie trackbarov pre odtieň, sýtosť a hodnotu

Teraz vytvoríme celkom 6 trackbarov pre odtieň, sýtosť a hodnotu. Každý bude mať dva, tj. 1 pre minimum a 1 pre maximum. Budeme používať funkciu createTrackbar openCV. Najprv uvidíme syntax tejto funkcie.

cv2.createTrackbar („WINDOWNAME“, „MAINWINDOWNAME“, „RANGE“). Môže to byť mätúce, ale nebojte sa, prejdeme každým krokom. Majte na pamäti jednu vec, že v openCV hodnotách odtieňa je 179, sýtosť je 255 a hodnota je 255

1. Vytvorenie TrackBaru pre min. Odtieň:

cv2.createTrackbar („Hue min“, „TrackBars“, 0, 179, prázdne)

V tomto Hue min je názov lišty, TrackBars je hlavné okno, 0 je poloha, na ktorej bude náš posúvač a 179 je rozsah, čo znamená, že silder sa bude pohybovať od 0 do 179

2. Vytvorenie TrackBaru pre maximálny odtieň:

cv2.createTrackbar („Hue max“, „TrackBars“, 179, 179, prázdny)

V tomto Hue max je názov lišty, TrackBars je hlavné okno, 179 je poloha, na ktorej sa bude nachádzať náš posúvač, a 179 je maximálny rozsah, čo znamená, že tlmič sa bude pohybovať od 179-0

3. Podobne zopakujte kroky pre sat min, sat max, val min a val max, ako je znázornené na obrázku

Výstupným obrázkom je obrázok s bielym pozadím. Takto budú vyzerať vaše vodiace lišty

Krok 4: Ako čítať a meniť veľkosť obrázku

Ako čítať a meniť veľkosť obrázku
Ako čítať a meniť veľkosť obrázku

cv2.imread () vám umožňuje prečítať si obrázok. Je dôležité mať na pamäti, že umiestnenie obrázka musí byť v rovnakom priečinku, kde je uložený program. Vložíme cyklus while, pretože by mal bežať, kým nebude čítať obrázok, alebo môžeme povedať, kým podmienka nie je pravdivá

img = cv2.imread ("ferrari.jpg")

  • V tomto som vytvoril názov premennej „img“, do ktorého ukladám obrázok
  • Do cv2.imread napíšte názov obrázku s jeho príponou do dvojitých úvodzoviek

Na zmenu veľkosti obrázka použijeme funkciu cv2.resize. Táto časť je voliteľná, ak chcete zmeniť veľkosť, môžete použiť túto funkciu

Do cv2.resize napíšte najskôr názov premennej, v ktorej je obrázok uložený, a potom jeho šírku a výšku

Krok 5: Čítanie hodnôt panela stôp a jeho použitie na obrázok

Čítanie hodnôt lišty stopy na použitie na obrázok
Čítanie hodnôt lišty stopy na použitie na obrázok
Čítanie hodnôt lišty stopy na použitie na obrázok
Čítanie hodnôt lišty stopy na použitie na obrázok

Dobre, takže teraz budeme čítať hodnoty panela lišty, aby sme to mohli použiť na náš obrázok. Hodnoty získame pomocou funkcie cv2.getTrackbarPos ().

Začnime touto časťou …

h_min = cv2.getTrackbarPos ("Hue min", "TrackBars")

Vo vyššie uvedenom vyhlásení vytváram názov premennej h_min, do ktorého budem ukladať hodnotu Hue min. Takže vo vnútri cv2.getTrackbarPos 1. argument by bol „Hue min“, pretože chcem hodnoty hue min (Pravopis musí byť úplne rovnaký ako funkcia createTrackbar) a 2. argument by bol názov okna lišty, do ktorého patrí.

  • Opakujte rovnaký postup pre h_max a ostatné funkcie, ako je znázornené na obrázku vyššie, a potom vytlačte všetky hodnoty pomocou print ()
  • Výstup je zobrazený na druhom obrázku. Vytlačí hodnoty h_min, h_max, s_min, s_max, v_min, s_max

Krok 6: Zobrazenie obrázku a nastavenie hornej a dolnej hranice

Zobrazenie obrázku a nastavenie hornej a dolnej hranice
Zobrazenie obrázku a nastavenie hornej a dolnej hranice

Teraz máme minimálnu a maximálnu hodnotu odtieňa, sýtosti a hodnoty, ktorú použijeme na odfiltrovanie obrazu, aby sme mohli konkrétny farebný výstup obrázka.

Na to vytvoríme masku pomocou funkcie cv2.inRange. A predtým nastavíme hornú a dolnú hranicu odtieňa, sýtosti a hodnoty

Vytvorte teda názov premennej „nižší“a pomocou funkcie numpy array nastavte rozsah min pre všetky 3 nasledovne

nižší = np.array ([h_min, s_min, v_min])

Opakujte rovnaký krok pre hornú časť

horná = np.array ([h_max, s_max, v_max])

Teraz vytvoríme masku nasledovne

maska = cv2.inRange (zmena veľkosti, dolná, horná) Vo vnútri cv2.inRang 1. argument bude premenná, v ktorej je uložený môj konečný obrázok, 2. argument bude dolný limit a 3. argument bude horný limit.

Teraz zobrazíme hlavný obrázok a masku. Na zobrazenie použijeme funkciu cv2.imshow ()

cv2.imshow ("img", zmena veľkosti) Toto má zobraziť hlavný obrázok. Prvý argument je názov okna, ktorému môžete dať ľubovoľné meno, a druhý argument je premenná, v ktorej je uložený môj hlavný obrázok, ktorý chcete zobraziť.

Podobne zopakujte kroky pre masku

cv2.imshow („Výstup“, maska)

Krok 7: Teraz posledný krok

Teraz posledný krok
Teraz posledný krok

V tomto poslednom kroku extrahujeme farbu auta a displeja.

Vytvoril som výsledok názvu premennej. Opäť môžete dať ľubovoľné meno. Budeme teda používať funkciu cv2.bitwise_and (), v ktorej budeme spoločne pridávať obrázky a vytvárať nový obrázok. A nech sú pixely na oboch obrázkoch prítomné, bude to znamenať buď áno alebo „1“.

result = cv2.bitwise_and (zmeniť veľkosť, zmeniť veľkosť, maska = maska)

  • V tomto bude prvý argument naším obrazom
  • Druhý argument bude tiež naším pôvodným obrázkom, ale bude nasledovať použitá maska, ktorú sme vytvorili predtým
  • A nakoniec len zobrazte výsledok pomocou funkcie imshow

Tento posledný krok skopírujte a prilepte. Je to len oneskorenie a výstupné okno môžete opustiť stlačením klávesu „a“na klávesnici

Krok 8: Konečné výstupy

Odporúča: