Obrazový procesor GET1033 kódovaný v Pythone: 5 krokov
Obrazový procesor GET1033 kódovaný v Pythone: 5 krokov
Anonim
Kódovaný procesor GET1033 Python
Kódovaný procesor GET1033 Python

Tento projekt je o vytvorení vlastného obrazového procesora kódovaného v pythone pre môj modul GET1033 Exploring Computational Media Literacy. Používateľ bude najskôr musieť zadať vlastnú fotografiu a potom vybrať požadované filtre. Vytvoril som 9 filtrov, ktorými sú: Zobraziť vstupný obrázok, Zrkadliť, Zalepiť za priečnik, Za priehľadný pruh, Kruhový obrázok, Rozmazanie, Otočenie, Zmena farby a Photoshop. Po výbere jedného z nich bude mať výstupný obrázok efekty. Ako je znázornené na obrázku, je to filter na zmenu farby, kde na obrázku zisťujem pixely zelenej farby a prevádzam ich do ružovej farby.

Krok 1: Proces jeho výroby

Proces jeho výroby
Proces jeho výroby

Krok 1: Stiahnite si Python odtiaľto!

Krok 2: Kódujte to!

Najprv som importoval niekoľko balíkov s vopred kódovanou funkciou, ktoré sú k dispozícii na použitie v kóde. Balíky, ktoré som importoval, sú Scipy, Matplot a Numpy.

Pre Scipy som importoval Miscellaneous Routines (MISC) a Multi-dimentional Image Processing (NDIMAGE). MISC slúži na čítanie a ukladanie obrázku, zatiaľ čo NDIMAGE má vykonávať gaussovský filter a otáčať.

Pre Matplotlib je to knižnica na vykresľovanie grafov v Pythone, ktorá poskytuje rozhranie podobné MATLAB.

Pre Numpy je to knižnica, ktorá môže podporovať veľké viacrozmerné polia a matice. Numpy je dôležitý, pretože mi umožňuje efektívne upravovať pole červenej, zelenej a modrej (RGB) obrázkov pri ich pridávaní alebo násobení. Napríklad A = [0, 1, 2] a s prítomnosťou Numpy, A*2 = [0, 2, 4] namiesto toho, aby sme dostali A*2 = [0, 1, 2, 0, 1, 2].

Keď pracujem na filtri na zmenu farby, pokúšam sa previesť zelené vlasy dievčaťa na ružovú. Čo som teda urobil, bolo zistiť zelené pixely na obrázku a vynásobiť ich (2, 0,2, 0,8). Preto namiesto skutočných zelených vlasov získam dievča s ružovými vlasmi.

Pokiaľ ide o Photoshop, pokúšam sa nahradiť zelené pozadie na obrázku Avengers obrázkom NUS. To, čo som urobil, bolo vynásobením 0 všetkých zelených pixelov a potom pridaním pixelov obrázku NUS k zeleným pixelom. Vďaka tomu mi potom vznikne obrázok Avengers v NUS.

Priložil som tiež svoj kód na GitHub a môžete si ho stiahnuť tu!

Krok 2: Ako to funguje?

Ako to funguje?
Ako to funguje?

Vývojový diagram ukazuje, ako funguje celý kód!

1. Najprv je používateľ vyzvaný, aby zadal obrázok podľa vlastného výberu. 2. Potom sa zobrazí zoznam filtrov, z ktorých si používateľ môže vybrať. 3. Ak používateľ zadá „1“až „9“, obrázok bude spracovaný a vygenerovaný podľa každého filtra. Ak používateľ zadá „R“, celý program sa vynuluje a používateľ bude vyzvaný, aby znova nahral obrázok. Ak používateľ zadá „Q“, program potom opustí slučku.

Krok 3: Čo to robí?

V tomto projekte je celkom 9 filtrov, ktoré som vytvoril, a to

1. Zobraziť vstupný obrázok - Ak chcete zobraziť odoslaný obrázok

2. Zrkadlový obraz - Odrazená duplikácia objektu, ale obrátená v smere

3. Umiestniť za pruh - Vkladanie čiernych zvislých pruhov so šírkou a rozstupom 50 pixelov.

4. Za priehľadným pruhom - Vloženie priehľadných zvislých pruhov so šírkou a rozstupom rovnými 50 pixelom

5. Kruhový obrázok - Vytvorenie kruhu v strede obrázku

6. Rozostrenie - Ak chcete rozmazať obrázok

7. Rotácia - Ak chcete otočiť obrázok o 45 stupňov

8. Zmena farby - Ak chcete zmeniť zelenú farbu na ružovú

9. Photoshop - Ak chcete zmeniť časť obrázku na iný obrázok

Krok 4: Prečo som to urobil?

Predtým som zvedavý, ako Instagram a Snapchat prišli s filtrami pre obrázky, vďaka ktorým boli také zaujímavé. Po prednáške a tutoriáli o rozšírenej realite som chcel urobiť niečo, čo s tým súvisí, ale rád by som začal od základného, ktorým je spracovanie obrazu, pretože som slabý v programovaní a rád by som sa naučil kódovať v Pythone.

Krok 5: Vylepšenia a čo urobia budúce verzie?

Jedným z vylepšení tohto projektu je vytvorenie vlastných filtrov tváre v živých videách pomocou Pythonu. Pokúsil som sa to kódovať, ale žiadny z nich som nemohol dosiahnuť kvôli nedostatku znalostí programovania a časového obmedzenia. Okrem toho môže byť obrazový procesor „múdrejší“, keď dokáže automaticky detekovať farby a meniť iba požadované časti. Existuje jeden čas, keď sa pokúšam zmeniť čierne vlasy človeka na inú farbu. Nakoniec zmením farbu očí a vlasov na modrú, takže obraz vyzerá veľmi divne. Dúfam, že sa mi podarí vytvoriť si vlastnú tvár