Čitatelia ako vy pomáhajú podporovať MUO. Keď uskutočníte nákup pomocou odkazov na našej stránke, môžeme získať pridruženú províziu. Čítaj viac.

Vytvorenie krásneho náčrtu si vyžaduje veľa času a úsilia. Našťastie sa programovanie vyvinulo, takže teraz môžete jednoducho transformovať obrázky a vytvárať nádherné návrhy. Jedna pôsobivá technika, ktorú môžete vykonať, je previesť obrázok na digitálny náčrt.

Hoci mechanická skica nebude vyzerať presne ako vaša vlastná kresba ceruzkou, výstup sa stále oplatí experimentovať. Naučte sa naprogramovať takúto aplikáciu pomocou modulu OpenCV v super priateľskom jazyku Python.

Modul OpenCV

OpenCV je spoločnosťou Intel vyvinutá a udržiavaná open-source knižnica metód počítačového videnia používaných na spracovanie obrazu a počítačové videnie. Používateľom uľahčuje vytváranie optimalizovaných aplikácií, interakciu s obrázkami a videami v reálnom čase a výber ideálneho algoritmu pre ich potreby.

Niektoré z populárnych aplikácií OpenCV obsahuje detekciu tváre

instagram viewer
, automatické sledovanie tváre v kinematografii, filtre sociálnych médií, rozpoznávanie ŠPZ autaa CCTV monitorovanie. Ak chcete použiť modul OpenCV v Pythone, otvorte svoj terminál a zadajte nasledujúci príkaz:

pip nainštalovať opencv-python

Ako previesť ľubovoľný obrázok na skicu pomocou Pythonu

Ak chcete previesť svoj obľúbený obrázok na digitálnu skicu, začnite tým, že ho umiestnite do rovnakého priečinka ako nový program Python, aby ste ho mohli jednoducho odkazovať. Potom začnite zostavovať svoj program pomocou nasledujúcich krokov.

Tento príklad kódu je dostupný v a úložisko GitHub a môžete ho bezplatne používať na základe licencie MIT.

Prvým krokom je import modulu OpenCV do vášho prostredia. Keď je OpenCV k dispozícii, môžete použiť jeho funkcie na vykonávanie rôznych úloh. Zadajte cestu k súboru obrázka do imread() funkciu na jeho načítanie. Uložte svoj obrázok do premennej – tzv obrázok1 tu – pre budúce použitie.

Uložte názov okna do premennej s názvom názov_okna. To bude užitočné, keď sa rozhodnete zobraziť obrázok pomocou imshow() funkciu. Táto funkcia vyžaduje dva parametre: názov a obrázok, ktorý chcete zobraziť.

importovať cv2

obrázok1 = cv2.imread('obrazok.jpg')
názov_okna = 'Aktuálny obrázok'
cv2.imshow (názov_okna, obrázok1)

Keď máte požadovaný obrázok, musíte vykonať päť operácií, aby ste ho premenili na náčrt. Najprv preveďte farebný obrázok do odtieňov sivej. Môžete tak urobiť pomocou cvtColor() funkciu. Táto funkcia prevezme obrázok, ktorého farby chcete zmeniť, a konverzný kód, ako napr COLOR_BGR2GRAY.

grey_img = cv2.cvtColor (obrázok1, cv2.COLOR_BGR2GRAY)

Keď máte obrázok v odtieňoch sivej, invertujte jeho farby. V tomto bode musíte pochopiť, ako počítač vytvára obraz. Obraz pozostáva z mnohých malých pixelov s rôznou intenzitou. Vo farebnom obrázku obsahuje každý pixel červenú, zelenú a modrú zložku, pričom každá má intenzitu, ktorá sa mení od 0 do 255.

Na obrázku v odtieňoch sivej sú len odtiene šedej, takže intenzita pixelu sa pohybuje medzi 0 a 1. Ak chcete invertovať intenzity pixelov tohto obrázka, odovzdajte obrázok v odtieňoch šedej do bitwise_not() funkciu.

Ako už názov napovedá, táto funkcia invertuje hodnotu každého pixelu na jeho doplnkový ekvivalent. Všetky pixely, ktoré sú väčšie ako 0, sú nastavené na 0 a všetky pixely, ktoré sú rovné 0, sú nastavené na 255.

invert = cv2.bitwise_not (grey_img)

Po prevrátení intenzít pixelov môžete obraz vyhladiť pomocou Gaussian Blur. Proces Gaussian Blur využíva Gaussov filter. Gaussov filter je dolnopriepustný filter, ktorý prepúšťa iba nízke frekvencie, pričom odstraňuje vysokofrekvenčnú zložku signálu alebo obrazu.

OpenCV Gaussovské rozostrenie() funkcia akceptuje štyri parametre. Ide o maticový objekt, ktorý funguje ako zdrojový obrázok, ksize (veľkosť jadra) a sigmaX (štandardná odchýlka Gaussovho jadra).

Predpokladajme, že máte v ruke fyzickú fotografiu. Ak by ste ho chceli rozmazať, mohli by ste naň naniesť kúsky vosku alebo pergamenového papiera. Jadro si môžete predstaviť ako tento priehľadný kúsok papiera. Digitálne sa to deje trochu inak. Ak chcete rozmazať, zaostriť a použiť ďalšie efekty na digitálny obrázok, vynásobíte maticu intenzitou pixelov obrázka.

Veľkosť ks je vždy kladné nepárne číslo. Keď zväčšíte veľkosť jadra, rozmazanie sa zväčší. Aby ste pochopili sigmaX, predpokladajme, že nanášate vosk na papier. Pri nanášaní vosku sa papier stáva rovnomerne priesvitným. Podobne musíte udržiavať hodnoty jadra blízko určitého bodu (priemeru). Hodnota sigmaX definuje rozdiel medzi priemernými a ostatnými hodnotami pixelov v obrázku.

Preneste obrátený obrázok, veľkosť jadra ako (21, 21) a štandardnú odchýlku 0 do funkcie Gaussian Blur:

rozostrenie = cv2.GaussianBlur (invertovať, (21, 21), 0)

Znovu odovzdajte rozmazaný obrázok funkcii bitwise_not(), aby ste ho invertovali:

invertedblur = cv2.bitwise_not (rozmazanie)

Nakoniec použite rozdeliť () a na vykonanie rozdelenia po jednotlivých prvkoch obrazového poľa v odtieňoch šedej a poľa s obráteným rozmazaním so stupnicou 256.

skica = cv2.divide (grey_img, invertedblur, scale=256.0)

V podstate funkcia vykonáva nasledujúcu operáciu:

defrozdeliť(grey_img, b, invertedblur=256.0):
vrátiť (grey_img * scale) / invertedblur

Uložte výsledok do premennej s názvom sketch. Ak chcete uložiť konečný obrázok, zadajte názov výstupného súboru a obrázok náčrtu napísať() funkciu. Na overenie môžete použiť funkciu imread() na načítanie uloženého obrázka náčrtu, pridelenie názvu okna a jeho zobrazenie pomocou funkcie imshow().

Použi waitkey() prechodom 0 na zobrazenie okna pôvodného obrázka a vygenerovaného okna náčrtu, kým nestlačíte ľubovoľný kláves.

cv2.imwrite("sketch.jpeg", skica)
obrázok = cv2.imread("sketch.jpeg")
názov_okna ='Sketch image'
cv2.imshow (názov_okna, obrázok)
cv2.waitKey(0)

Spojte celý kód a máte pripravený program.

Ukážkový výstup prevodu obrázka na skicu pomocou tohto programu Python

Môžete si vybrať krásny obrázok na šírku a spustiť ho cez program, aby ste vytvorili tento úžasný digitálny náčrt.

Na obrázku na výšku program vygeneruje nasledujúcu digitálnu skicu.

Môžete experimentovať s parametrami funkcie podľa svojich predstáv, aby ste vygenerovali želanú digitálnu skicu.

Spracovanie obrazu a počítačové videnie

Spracovanie obrazu a počítačové videnie sú dve úzko súvisiace oblasti technológie. Oba zahŕňajú úpravu digitálnych obrázkov, aby sa dosiahli požadované výsledky. Spracovanie obrazu sa zameriava na zlepšenie obrazu, zatiaľ čo počítačové videnie hľadá vzory a objekty v obraze, aby mu porozumelo.

Scikit-image je ďalšia knižnica Pythonu, ktorá poskytuje širokú škálu funkcií na spracovanie obrázkov. Má niekoľko predkompilovaných modulov, filtrov, vrstiev, transformácií a ďalších. Ak hľadáte modul na použitie pre modely hlbokého učenia, ako sú CNN a RNN, možno budete chcieť preskúmať Torchvision.