Čitatelji poput vas podržavaju MUO. Kada kupite putem poveznica na našoj stranici, možemo zaraditi partnersku proviziju. Čitaj više.

Izrada lijepe skice zahtijeva puno vremena i truda. Srećom, programiranje se razvilo tako da sada možete jednostavno transformirati slike i stvoriti prekrasne dizajne. Jedna impresivna tehnika koju možete izvesti je pretvaranje slike u digitalnu skicu.

Iako mehanička skica neće izgledati baš poput vašeg crteža olovkom, rezultat je ipak vrijedan eksperimentiranja. Naučite kako programirati takvu aplikaciju pomoću modula OpenCV u super prijateljskom jeziku Python.

Modul OpenCV

OpenCV je biblioteka otvorenog koda metoda računalnog vida koja se koristi za obradu slike i računalni vid koji je razvio i održava Intel. Korisnicima olakšava stvaranje optimiziranih aplikacija, interakciju sa slikama i videozapisima u stvarnom vremenu i odabir idealnog algoritma za njihove potrebe.

Neke od popularnih aplikacija OpenCV uključuje detekciju lica, automatsko praćenje lica u kinematografiji, filtri društvenih medija,

prepoznavanje registarskih tablica automobila, i CCTV nadzor. Za korištenje modula OpenCV u Pythonu, otvorite svoj terminal i upišite sljedeću naredbu:

pip instaliraj opencv-python

Kako pretvoriti bilo koju sliku u skicu pomoću Pythona

Kako biste svoju omiljenu sliku pretvorili u digitalnu skicu, počnite tako da je stavite u istu mapu u kojoj se nalazi novi Python program, radi lakšeg referenciranja. Zatim počnite graditi svoj program koristeći sljedeće korake.

Ovaj primjer koda dostupan je u a GitHub spremište i besplatan je za korištenje pod MIT licencom.

Prvi korak je uvoz OpenCV modula u vaše okruženje. Nakon što OpenCV bude dostupan, možete koristiti njegovu funkcionalnost za obavljanje raznih zadataka. Proslijedite put vaše slikovne datoteke u imread() funkciju za učitavanje. Pohranite svoju sliku u varijablu—zvanu slika1 ovdje—za buduću referencu.

Pohranite naslov prozora u varijablu pod nazivom naziv_prozora. Ovo će biti korisno kada odlučite prikazati sliku pomoću imshow() funkcija. Ova funkcija zahtijeva dva parametra: naslov i sliku koju želite prikazati.

uvoz cv2

slika1 = cv2.imread('image.jpg')
naziv_prozora = 'Stvarna slika'
cv2.imshow (naziv_prozora, slika1)

Nakon što dobijete željenu sliku, morate izvršiti pet operacija kako biste je pretvorili u skicu. Prvo pretvorite sliku u boji u sive nijanse. To možete učiniti s cvtColor() funkcija. Ova funkcija uzima sliku čije boje želite promijeniti i kod konverzije kao što je BOJA_BGR2SIVA.

siva_img = cv2.cvtColor (slika1, cv2.COLOR_BGR2GRAY)

Kada imate sliku u sivim tonovima, obrnite njene boje. U ovom trenutku morate razumjeti kako računalo oblikuje sliku. Slika se sastoji od mnogo sitnih piksela različitog intenziteta. Na slici u boji svaki piksel sadrži crvenu, zelenu i plavu komponentu, a svaka ima intenzitet koji varira od 0 do 255.

Na slici u sivim tonovima postoje samo nijanse sive, tako da intenzitet piksela varira između 0 i 1. Da biste invertirali intenzitete piksela ove slike, proslijedite sliku u sivim tonovima na pobitno_ne() funkcija.

Kao što naziv sugerira, ova funkcija pretvara vrijednost svakog piksela u njegov komplementarni ekvivalent. Svi pikseli koji su veći od 0 postavljeni su na 0, a svi pikseli koji su jednaki 0 ​​postavljeni su na 255.

invert = cv2.bitwise_not (grey_img)

Nakon obrnutog intenziteta piksela, možete izravnati sliku uz pomoć Gaussian Blur-a. Proces Gaussian Blur koristi Gaussov filter. Gaussov filtar je niskopropusni filtar koji propušta samo niske frekvencije, uklanjajući visokofrekventnu komponentu signala ili slike.

OpenCV-ovi GaussianBlur() funkcija prihvaća četiri parametra. To su matrični objekt koji djeluje kao izvorna slika, ksize (veličina kernela) i sigmaX (Gaussova standardna devijacija kernela).

Pretpostavimo da imate fizičku fotografiju u ruci. Ako ga želite zamutiti, možete preko njega staviti komadiće voska ili pergament papira. Možete zamisliti kernel kao ovaj prozirni komad papira. Digitalno se to događa malo drugačije. Da biste zamutili, izoštrili i primijenili druge efekte na digitalnu sliku, pomnožite matricu s intenzitetom piksela slike.

Ksize je uvijek pozitivan neparan broj. Kako povećavate veličinu jezgre, zamućenje se povećava. Da biste razumjeli sigmaX, pretpostavite da nanosite vosak na papir. Dok nanosite vosak, papir postaje jednoliko proziran. Slično tome, morate održavati vrijednosti kernela blizu određene točke (prosjek). Vrijednost sigmaX definira razliku između prosječne i ostalih vrijednosti piksela na slici.

Proslijedite obrnutu sliku, veličinu jezgre kao (21, 21) i standardnu ​​devijaciju 0 u funkciju Gaussian Blur:

zamućenje = cv2.GaussianBlur (obrnuto, (21, 21), 0)

Ponovno proslijedite zamućenu sliku funkciji bitwise_not() da je preokrenete:

invertedblur = cv2.bitwise_not (zamućenje)

Na kraju, upotrijebite podijeliti() funkciju i za izvođenje dijeljenja po elementima niza slika u sivim tonovima i niza obrnutih zamućenih slika s ljestvicom od 256.

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

Funkcija u osnovi izvodi sljedeće operacije:

defpodijeliti(grey_img, b, invertedblur=256.0):
povratak (siva_img * skala) / obrnuto zamućenje

Pohranite rezultat u varijablu pod nazivom skica. Da biste spremili konačnu sliku, proslijedite naziv za svoju izlaznu datoteku i sliku skice u napiši() funkcija. Da biste to provjerili, možete upotrijebiti funkciju imread() za učitavanje spremljene slike skice, dati naslov prozoru i prikazati ga pomoću funkcije imshow().

Koristiti tipka čekanja() funkciju prolaskom 0 za prikaz prozora izvorne slike i generiranog prozora skice dok ne pritisnete bilo koju tipku.

cv2.imwrite("skica.jpeg", Skica)
slika = cv2.imread("skica.jpeg")
naziv_prozora ='Skica slike'
cv2.imshow (naziv_prozora, slika)
cv2.waitKey(0)

Skupite sav kod i imate spreman program.

Ogledni rezultat pretvaranja slike u skicu pomoću ovog Python programa

Možete odabrati prekrasnu pejzažnu sliku i pokrenuti je kroz program kako biste generirali ovu zapanjujuću digitalnu skicu.

Na portretnoj slici program generira sljedeću digitalnu skicu.

Možete eksperimentirati s parametrima funkcije prema svojim željama kako biste generirali željenu digitalnu skicu.

Obrada slike i računalni vid

Obrada slike i računalni vid dva su blisko povezana područja tehnologije. Oba uključuju mijenjanje digitalnih slika kako bi se dobili željeni rezultati. Obrada slike usmjerena je na poboljšanje slike, dok računalni vid nastoji pronaći uzorke i objekte unutar slike kako bi je razumio.

Scikit-image još je jedna biblioteka Pythona koja pruža širok izbor funkcija za obradu slike. Ima nekoliko unaprijed kompiliranih modula, filtara, slojeva, transformacija i više. Ako tražite modul koji biste koristili za modele dubokog učenja kao što su CNN i RNN, možda biste trebali istražiti Torchvision.