Kauniin luonnoksen tekeminen vaatii paljon aikaa ja vaivaa. Onneksi ohjelmointi on kehittynyt, joten voit nyt helposti muuttaa kuvia ja luoda kauniita malleja. Yksi vaikuttava tekniikka, jonka voit suorittaa, on muuntaa kuva digitaaliseksi luonnokseksi.
Vaikka mekaaninen luonnos ei näytä täsmälleen samalta kuin oma lyijykynäpiirros, tulos on silti kokeilemisen arvoinen. Opi ohjelmoimaan tällainen sovellus OpenCV-moduulin avulla erittäin ystävällisellä Python-kielellä.
OpenCV-moduuli
OpenCV on Intelin kehittämä ja ylläpitämä avoimen lähdekoodin kirjasto, joka sisältää kuvankäsittelyyn ja tietokonenäköön käytettyjä tietokonenäkömenetelmiä. Sen avulla käyttäjien on helppoa luoda optimoituja sovelluksia, olla vuorovaikutuksessa kuvien ja videoiden kanssa reaaliajassa ja valita tarpeisiinsa ihanteellinen algoritmi.
Jotkut suosituimmista sovelluksista
OpenCV sisältää kasvojentunnistuksen, automaattinen kasvojen seuranta elokuvissa, sosiaalisen median suodattimet, auton rekisterikilven tunnistusja CCTV-valvonta. Jos haluat käyttää OpenCV-moduulia Pythonissa, avaa pääte ja kirjoita seuraava komento:pip asennus opencv-python
Kuinka muuntaa minkä tahansa kuvan luonnokseksi Pythonilla
Jos haluat muuntaa suosikkikuvasi digitaaliseksi luonnokseksi, aloita asettamalla se samaan kansioon uuden Python-ohjelman kanssa, jotta se on helppo viitata. Aloita sitten ohjelman rakentaminen seuraavien vaiheiden avulla.
Tämä esimerkkikoodi on saatavilla a GitHub-arkisto ja sitä voi käyttää ilmaiseksi MIT-lisenssin alaisena.
Ensimmäinen askel on tuoda OpenCV-moduuli ympäristöösi. Kun OpenCV on saatavilla, voit käyttää sen toimintoja eri tehtävien suorittamiseen. Välitä kuvatiedoston polku tiedostoon imread() toiminto sen lataamiseksi. Tallenna kuvasi muuttujaan, jota kutsutaan nimellä kuva1 tässä - myöhempää käyttöä varten.
Tallenna ikkunan otsikko muuttujaan nimeltä ikkunan_nimi. Tästä on hyötyä, kun päätät näyttää kuvan käyttämällä imshow() toiminto. Tämä toiminto vaatii kaksi parametria: otsikon ja näytettävän kuvan.
tuonti cv2
kuva1 = cv2.imread("kuva.jpg")
ikkunan_nimi = "Todellinen kuva"
cv2.imshow (ikkunan_nimi, kuva1)
Kun sinulla on haluttu kuva, sinun on suoritettava viisi toimintoa muuttaaksesi sen luonnokseksi. Muunna ensin värikuva harmaasävyiksi. Voit tehdä sen kanssa cvtColor() toiminto. Tämä toiminto ottaa kuvan, jonka värejä haluat muuttaa, ja muunnoskoodin, kuten esim COLOR_BGR2GRAY.
grey_img = cv2.cvtColor (kuva1, cv2.COLOR_BGR2GRAY)
Kun sinulla on harmaasävykuva, käännä sen värit. Tässä vaiheessa sinun on ymmärrettävä, kuinka tietokone muodostaa kuvan. Kuva koostuu useista pienistä pikseleistä, joiden voimakkuus vaihtelee. Värikuvassa jokainen pikseli sisältää punaisia, vihreitä ja sinisiä komponentteja, joiden kunkin intensiteetti vaihtelee välillä 0 - 255.
Harmaasävykuvassa on vain harmaan sävyjä, joten pikselin intensiteetti vaihtelee välillä 0 ja 1. Kääntääksesi tämän kuvan pikselivoimakkuuden, siirrä harmaasävykuva bitwise_not() toiminto.
Kuten nimestä voi päätellä, tämä toiminto kääntää kunkin pikselin arvon sen täydentäväksi vastineeksi. Kaikki pikselit, jotka ovat suurempia kuin 0, asetetaan arvoon 0, ja kaikki pikselit, jotka ovat yhtä suuria kuin 0, asetetaan arvoon 255.
invert = cv2.bitwise_not (grey_img)
Pikselivoimakkuuksien kääntämisen jälkeen voit tasoittaa kuvaa Gaussian Blur -toiminnon avulla. Gaussian Blur -prosessissa käytetään Gauss-suodatinta. Gauss-suodatin on alipäästösuodatin, joka päästää vain matalia taajuuksia läpi ja poistaa signaalin tai kuvan korkeataajuisen komponentin.
OpenCV: t GaussianBlur() toiminto hyväksyy neljä parametria. Nämä ovat matriisiobjekti, joka toimii lähdekuvana, ksize (ytimen koko) ja sigmaX (Gaussin ytimen standardipoikkeama).
Oletetaan, että sinulla on fyysinen valokuva kädessäsi. Jos haluat hämärtää sen, voit levittää sen päälle vaha- tai pergamenttipaperia. Voit kuvitella ytimen tämän läpinäkyvän paperinpalana. Digitaalisesti tämä tapahtuu hieman eri tavalla. Voit sumentaa, terävöittää ja käyttää muita tehosteita digitaaliseen kuvaan kertomalla matriisin kuvan pikselien intensiteetillä.
Ksize on aina positiivinen pariton luku. Kun lisäät ytimen kokoa, epäterävyys kasvaa. Ymmärtääksesi sigmaX: n oletetaan, että levität vahaa paperille. Kun levität vahaa, paperi muuttuu tasaisesti läpikuultavaksi. Vastaavasti sinun on pidettävä ytimen arvot lähellä tiettyä pistettä (keskiarvo). SigmaX-arvo määrittelee eron kuvan pikselien keskiarvojen ja muiden arvojen välillä.
Välitä käänteinen kuva, ytimen koko muodossa (21, 21) ja 0 standardipoikkeama Gaussian Blur -funktiolle:
hämärtää = cv2.GaussianBlur (käänteinen, (21, 21), 0)
Ohjaa epäselvä kuva uudelleen bitwise_not()-funktiolle sen kääntämiseksi:
käänteinen sumennus = cv2.bitwise_not (sumennus)
Käytä lopuksi jakaa() toimintoa ja jakaa elementtikohtaisesti harmaasävykuvataulukon ja käänteisen sumeuskuvataulukon asteikolla 256.
sketch = cv2.jako (grey_img, käänteinen sumennus, asteikko=256.0)
Pohjimmiltaan toiminto suorittaa seuraavan toiminnon:
defjakaa(grey_img, b, käänteinen sumennus=256.0):
palata (grey_img * asteikko) / käänteinen sumennus
Tallenna tulos muuttujaan nimeltä luonnos. Tallenna lopullinen kuva antamalla nimi tulostiedostolle ja luonnoskuvalle imwrite() toiminto. Vahvistaaksesi sen, voit ladata tallennetun luonnoskuvan imread()-funktiolla, antaa ikkunalle otsikon ja näyttää sen imshow()-funktiolla.
Käytä odotusavain () toimintoa ohittamalla 0 näyttääksesi alkuperäisen kuvaikkunan ja luodun luonnosikkunan, kunnes painat mitä tahansa näppäintä.
cv2.imwrite("sketch.jpeg", luonnos)
kuva = cv2.imread("sketch.jpeg")
ikkunan_nimi ="Sketch image"
cv2.imshow (ikkunan_nimi, kuva)
cv2.waitKey(0)
Yhdistä kaikki koodi ja ohjelma on valmis.
Esimerkkituloste kuvan muuntamisesta luonnokseksi tällä Python-ohjelmalla
Voit valita kauniin maisemakuvan ja suorittaa sen ohjelman läpi luodaksesi tämän upean digitaalisen luonnoksen.
Muotokuvalle ohjelma luo seuraavan digitaalisen luonnoksen.
Voit kokeilla funktion parametreja mielesi mukaan luodaksesi haluamasi digitaalisen luonnoksen.
Kuvankäsittely ja tietokonenäkö
Kuvankäsittely ja tietokonenäkö ovat kaksi läheisesti liittyvää tekniikan alaa. Molemmat sisältävät digitaalisten kuvien muuttamisen haluttujen tulosten saavuttamiseksi. Kuvankäsittely keskittyy kuvan parantamiseen, kun taas tietokonenäkö etsii kuvioita ja esineitä kuvasta ymmärtääkseen sitä.
Scikit-image on toinen Python-kirjasto, joka tarjoaa laajan valikoiman kuvankäsittelytoimintoja. Siinä on useita esikäännettyjä moduuleja, suodattimia, tasoja, muunnoksia ja paljon muuta. Jos etsit moduulia käytettäväksi syväoppimismalleissa, kuten CNN ja RNN, kannattaa ehkä tutustua Torchvisioniin.