Skaistas skices izveidošana prasa daudz laika un pūļu. Par laimi, programmēšana ir attīstījusies, tāpēc tagad varat viegli pārveidot attēlus un izveidot skaistus dizainus. Viens iespaidīgs paņēmiens, ko varat veikt, ir attēla pārvēršana digitālā skicē.
Lai gan mehāniskā skice neizskatīsies gluži kā jūsu zīmuļa zīmējums, ar rezultātu joprojām ir vērts eksperimentēt. Uzziniet, kā ieprogrammēt šādu lietotni, izmantojot OpenCV moduli īpaši draudzīgā Python valodā.
OpenCV modulis
OpenCV ir Intel izstrādāta un uzturēta atvērtā pirmkoda bibliotēka ar datorredzes metodēm, ko izmanto attēlu apstrādei un datorredzei. Tas ļauj lietotājiem vienkārši izveidot optimizētas lietojumprogrammas, mijiedarboties ar attēliem un videoklipiem reāllaikā un izvēlēties savām vajadzībām ideālo algoritmu.
Dažas no populārākajām lietojumprogrammām OpenCV ietver sejas noteikšanu, automātiska sejas izsekošana kinematogrāfijā, sociālo mediju filtri,
automašīnas numura zīmes atpazīšanaun videonovērošanas uzraudzība. Lai Python izmantotu OpenCV moduli, atveriet savu termināli un ierakstiet šādu komandu:pip instalēt opencv-python
Kā pārvērst jebkuru attēlu skicē, izmantojot Python
Lai pārvērstu savu iecienītāko attēlu digitālā skicē, sāciet, ievietojot to tajā pašā mapē, kurā atrodas jauna Python programma, lai atvieglotu atsauces. Pēc tam sāciet veidot programmu, veicot šādas darbības.
Šis koda piemērs ir pieejams a GitHub repozitorijs un to varat izmantot bez maksas saskaņā ar MIT licenci.
Pirmais solis ir OpenCV moduļa importēšana savā vidē. Kad OpenCV ir pieejams, varat izmantot tā funkcionalitāti dažādu uzdevumu veikšanai. Ievietojiet attēla faila ceļu uz nelasīts () funkciju, lai to ielādētu. Saglabājiet attēlu mainīgā, ko sauc attēls1 šeit — turpmākai uzziņai.
Saglabājiet loga nosaukumu mainīgajā ar nosaukumu loga_nosaukums. Tas būs noderīgi, ja izvēlaties parādīt attēlu, izmantojot imshow () funkciju. Šai funkcijai ir nepieciešami divi parametri: nosaukums un attēls, ko vēlaties parādīt.
imports cv2
attēls1 = cv2.imread("attēls.jpg")
loga_nosaukums = "Faktiskais attēls"
cv2.imshow (window_name, image1)
Kad esat ieguvis vēlamo attēlu, jums jāveic piecas darbības, lai to pārveidotu par skici. Vispirms pārveidojiet krāsu attēlu pelēktoņos. To var izdarīt ar cvtColor() funkciju. Šī funkcija uzņem attēlu, kura krāsas vēlaties mainīt, un konversijas kodu, piemēram, KRĀSA_BGR2GRAY.
grey_img = cv2.cvtColor (image1, cv2.COLOR_BGR2GRAY)
Kad esat ieguvis pelēktoņu attēlu, apgrieziet tā krāsas. Šajā brīdī jums ir jāsaprot, kā dators veido attēlu. Attēls sastāv no daudziem maziem pikseļiem ar dažādu intensitāti. Krāsu attēlā katrs pikselis satur sarkanas, zaļas un zilas sastāvdaļas, katra ar intensitāti, kas svārstās no 0 līdz 255.
Pelēktoņu attēlā ir tikai pelēkas nokrāsas, tāpēc pikseļa intensitāte svārstās no 0 līdz 1. Lai apgrieztu šī attēla pikseļu intensitāti, nosūtiet pelēktoņu attēlu uz bitwise_not() funkciju.
Kā norāda nosaukums, šī funkcija apgriež katra pikseļa vērtību tā papildu ekvivalentā. Visi pikseļi, kas ir lielāki par 0, ir iestatīti uz 0, un visi pikseļi, kas ir vienādi ar 0, ir iestatīti uz 255.
invert = cv2.bitwise_not (grey_img)
Pēc pikseļu intensitātes invertēšanas attēlu var izlīdzināt, izmantojot Gausa izplūšanu. Gausa izplūšanas procesā tiek izmantots Gausa filtrs. Gausa filtrs ir zemas caurlaidības filtrs, kas ļauj iziet cauri tikai zemām frekvencēm, noņemot signāla vai attēla augstfrekvences komponentu.
OpenCV GaussianBlur() funkcija pieņem četrus parametrus. Tie ir matricas objekti, kas darbojas kā avota attēls, ksize (kodola izmērs) un sigmaX (Gausa kodola standarta novirze).
Pieņemsim, ka jūsu rokā ir fiziska fotogrāfija. Ja vēlaties to izpludināt, varat tam uzklāt vaska vai pergamenta papīra gabalus. Jūs varat iedomāties kodolu kā šo caurspīdīgo papīra gabalu. Digitāli tas notiek nedaudz savādāk. Lai aizmiglotu, asinātu un lietotu citus efektus digitālajam attēlam, matrica jāreizina ar attēla pikseļu intensitāti.
Ksize vienmēr ir pozitīvs nepāra skaitlis. Palielinot kodola izmēru, izplūdums palielinās. Lai saprastu sigmaX, pieņemsim, ka uzklājat vasku uz papīra. Uzklājot vasku, papīrs kļūst vienmērīgi caurspīdīgs. Tāpat kodola vērtības ir jāsaglabā tuvu noteiktam punktam (vidējam). SigmaX vērtība nosaka atšķirību starp attēla pikseļu vidējo vērtību un citām vērtībām.
Nododiet apgriezto attēlu, kodola izmēru kā (21, 21) un 0 standarta novirzi Gausa izplūšanas funkcijai:
izplūdums = cv2.GaussianBlur (apgriezts, (21, 21), 0)
Nododiet izplūdušo attēlu funkcijai bitwise_not() vēlreiz, lai to apgrieztu:
apgrieztā izplūšana = cv2.bitwise_not (izplūšana)
Visbeidzot izmantojiet sadalīt () funkciju un veikt pelēktoņu attēlu masīva un apgrieztā izplūšanas attēla masīva sadalīšanu pa elementiem ar skalu 256.
skice = cv2.divide (grey_img, invertedblur, scale=256.0)
Būtībā funkcija veic šādu darbību:
defsadalīt(grey_img, b, invertedblur=256.0):
atgriezties (grey_img * skala) / invertedblur
Saglabājiet rezultātu mainīgā ar nosaukumu skicē. Lai saglabātu galīgo attēlu, nosūtiet izvades faila un skices attēla nosaukumu imwrite () funkciju. Lai to pārbaudītu, varat izmantot imread() funkciju, lai ielādētu saglabāto skices attēlu, piešķirtu logam nosaukumu un parādītu to, izmantojot imshow() funkciju.
Izmantojiet gaidiet taustiņu () funkciju, palaižot garām 0, lai parādītu sākotnējo attēla logu un ģenerēto skices logu, līdz nospiežat jebkuru taustiņu.
cv2.imwrite("sketch.jpeg", skice)
attēls = cv2.imread("sketch.jpeg")
loga_nosaukums ="Skices attēls"
cv2.imshow (loga_nosaukums, attēls)
cv2.waitKey(0)
Apvienojiet visu kodu, un programma ir gatava.
Izvades paraugs attēla pārvēršanai skicē, izmantojot šo Python programmu
Varat izvēlēties skaistu ainavas attēlu un palaist to caur programmu, lai ģenerētu šo satriecošo digitālo skici.
Portreta attēlā programma ģenerē šādu digitālo skici.
Varat eksperimentēt ar funkcijas parametriem atbilstoši savām vēlmēm, lai ģenerētu vēlamo digitālo skici.
Attēlu apstrāde un datorredze
Attēlu apstrāde un datorredze ir divas cieši saistītas tehnoloģiju jomas. Tie abi ietver digitālo attēlu maiņu, lai iegūtu vēlamos rezultātus. Attēlu apstrāde koncentrējas uz attēla uzlabošanu, savukārt datorredze meklē attēlus un objektus, lai to saprastu.
Scikit-image ir vēl viena Python bibliotēka, kas nodrošina plašu attēlu apstrādes funkciju klāstu. Tam ir vairāki iepriekš kompilēti moduļi, filtri, slāņi, transformācijas un daudz kas cits. Ja meklējat moduli, ko izmantot dziļās mācīšanās modeļos, piemēram, CNN un RNN, iespējams, vēlēsities izpētīt Torchvision.