Lesere som deg er med på å støtte MUO. Når du foretar et kjøp ved å bruke lenker på nettstedet vårt, kan vi tjene en tilknyttet provisjon. Les mer.

Å lage en vakker skisse krever mye tid og krefter. Heldigvis har programmering utviklet seg slik at du nå enkelt kan transformere bilder og lage vakre design. En imponerende teknikk du kan utføre er å konvertere et bilde til en digital skisse.

Selv om en mekanisk skisse ikke vil se akkurat ut som din egen blyanttegning, er resultatet fortsatt verdt å eksperimentere med. Lær hvordan du programmerer en slik app ved hjelp av OpenCV-modulen på det supervennlige Python-språket.

OpenCV-modulen

OpenCV er et Intel-utviklet og vedlikeholdt åpen kildekode-bibliotek med datasynsmetoder som brukes for bildebehandling og datasyn. Det gjør det enkelt for brukere å lage optimaliserte applikasjoner, samhandle med bilder og videoer i sanntid og velge den ideelle algoritmen for deres behov.

Noen av de populære applikasjonene til OpenCV inkluderer ansiktsgjenkjenning

, automatisk ansiktssporing i kinematografi, sosiale medier-filtre, gjenkjenning av bilskilt, og CCTV-overvåking. For å bruke OpenCV-modulen i Python, åpne terminalen og skriv inn følgende kommando:

pip installer opencv-python

Hvordan konvertere et hvilket som helst bilde til en skisse ved hjelp av Python

For å konvertere favorittbildet ditt til en digital skisse, start med å plassere det i samme mappe som et nytt Python-program, for enkel referanse. Begynn deretter å bygge programmet ved å bruke følgende trinn.

Denne eksempelkoden er tilgjengelig i en GitHub-depot og er gratis for deg å bruke under MIT-lisensen.

Det første trinnet er å importere OpenCV-modulen til ditt miljø. Når OpenCV er tilgjengelig, kan du bruke funksjonaliteten til å utføre ulike oppgaver. Send banen til bildefilen din inn i imread() funksjon for å laste den. Lagre bildet ditt i en variabel – kalt bilde1 her – for fremtidig referanse.

Lagre tittelen på vinduet i en variabel med navn vindu_navn. Dette vil være nyttig når du velger å vise bildet ved hjelp av imshow() funksjon. Denne funksjonen krever to parametere: tittelen og bildet du vil vise.

import cv2

bilde1 = cv2.imread('image.jpg')
vindu_navn = "Faktisk bilde"
cv2.imshow (vindusnavn, bilde1)

Når du har det ønskede bildet, må du utføre fem operasjoner for å forvandle det til en skisse. Konverter først fargebildet til gråtoner. Du kan gjøre det med cvtColor() funksjon. Denne funksjonen tar inn bildet hvis farger du vil endre og en konverteringskode som f.eks COLOR_BGR2GRAY.

grey_img = cv2.cvtColor (bilde1, cv2.COLOR_BGR2GRAY)

Når du har et gråtonebilde, inverterer du fargene. På dette tidspunktet må du forstå hvordan en datamaskin danner et bilde. Et bilde består av mange bittesmå piksler med varierende intensitet. I et fargebilde inneholder hver piksel røde, grønne og blå komponenter, hver med en intensitet som varierer fra 0 til 255.

I et gråtonebilde er det bare gråtoner, så intensiteten til en piksel varierer mellom 0 og 1. For å invertere pikselintensiteten til dette bildet, send gråtonebildet til bitwise_not() funksjon.

Som navnet antyder, inverterer denne funksjonen verdien av hver piksel til dens komplementære ekvivalent. Alle piksler som er større enn 0 settes til 0, og alle piksler som er lik 0 settes til 255.

invert = cv2.bitwise_not (grey_img)

Etter å ha invertert pikselintensiteten, kan du jevne ut bildet ved hjelp av Gaussisk uskarphet. Gaussisk uskarphet-prosessen bruker et Gaussisk filter. Et gaussisk filter er et lavpassfilter som bare lar lave frekvenser passere, og fjerner høyfrekvente komponenten til et signal eller et bilde.

OpenCV-er Gaussian Blur() funksjonen aksepterer fire parametere. Dette er et matriseobjekt som fungerer som kildebildet, ksize (størrelsen på kjernen) og sigmaX (det gaussiske kjernens standardavvik).

Anta at du har et fysisk fotografi i hånden. Hvis du ville gjøre det uskarpt, kan du legge voks- eller pergamentpapir over det. Du kan forestille deg kjernen som denne gjennomsiktige papirbiten. Digitalt skjer dette litt annerledes. For å uskarpe, gjøre skarpere og bruke andre effekter på et digitalt bilde, multipliserer du en matrise med intensiteten til bildets piksler.

Ksize er alltid et positivt oddetall. Når du øker kjernestørrelsen, øker uskarphet. For å forstå sigmaX, anta at du bruker voks på et papir. Når du påfører voks, blir papiret jevnt gjennomskinnelig. På samme måte må du holde kjernens verdier nær et spesifikt punkt (gjennomsnittet). SigmaX-verdien definerer forskjellen mellom gjennomsnittsverdien og andre verdier for pikslene i et bilde.

Send det inverterte bildet, kjernestørrelsen som (21, 21) og 0 standardavvik til Gaussian Blur-funksjonen:

blur = cv2.GaussianBlur (invert, (21, 21), 0)

Send det uskarpe bildet til funksjonen bitwise_not() igjen for å invertere det:

inverted blur = cv2.bitwise_not (blur)

Til slutt, bruk dele opp() funksjon og for å utføre per-element deling av gråtonebildematrisen og den inverterte uskarphet med en skala på 256.

sketch = cv2.divide (grey_img, inverted blur, scale=256.0)

Funksjonen utfører i hovedsak følgende operasjon:

defdele opp(grey_img, b, inverted blur=256.0):
komme tilbake (grey_img * skala) / inverted blur

Lagre resultatet i en variabel kalt skisse. For å lagre det endelige bildet, send et navn for utdatafilen og skissebildet til skriv() funksjon. For å verifisere det, kan du bruke imread()-funksjonen til å laste det lagrede skissebildet, gi en vindustittel og vise den ved hjelp av imshow()-funksjonen.

Bruke ventetast() funksjon ved å sende 0 for å vise det originale bildevinduet og det genererte skissevinduet til du trykker på en hvilken som helst tast.

cv2.imwrite("sketch.jpeg", skisse)
bilde = cv2.imread("sketch.jpeg")
vindu_navn ='Skisse bilde'
cv2.imshow (vindusnavn, bilde)
cv2.waitKey(0)

Ta med all koden sammen, og du har programmet klart.

Eksempelutgang for å konvertere et bilde til en skisse ved å bruke dette Python-programmet

Du kan velge et vakkert landskapsbilde og kjøre det gjennom programmet for å generere denne fantastiske digitale skissen.

På et portrettbilde genererer programmet følgende digitale skisse.

Du kan eksperimentere med parametrene til funksjonen i henhold til din smak for å generere din ønskede digitale skisse.

Bildebehandling og datasyn

Bildebehandling og datasyn er to nært beslektede teknologifelt. De involverer begge å endre digitale bilder for å få ønskede resultater. Bildebehandling fokuserer på å forbedre et bilde, mens datasyn søker å finne mønstre og objekter i et bilde for å forstå det.

Scikit-image er et annet Python-bibliotek som tilbyr et bredt utvalg av bildebehandlingsfunksjoner. Den har flere forhåndskompilerte moduler, filtre, lag, transformasjoner og mer. Hvis du ser etter en modul du kan bruke for dyplæringsmodeller som CNN og RNN, kan det være lurt å utforske Torchvision.