Kauni visandi tegemine nõuab palju aega ja vaeva. Õnneks on programmeerimine arenenud, nii et saate nüüd hõlpsalt pilte teisendada ja ilusaid kujundusi luua. Üks muljetavaldav tehnika, mida saate kasutada, on pildi teisendamine digitaalseks visandiks.
Kuigi mehaaniline visand ei näe täpselt välja nagu teie enda pliiatsijoonis, tasub väljund siiski katsetada. Õppige, kuidas programmeerida sellist rakendust OpenCV mooduli abil ülisõbralikus Pythoni keeles.
OpenCV moodul
OpenCV on Inteli väljatöötatud ja hooldatud avatud lähtekoodiga raamatukogu arvutinägemismeetoditest, mida kasutatakse pilditöötluseks ja arvutinägemiseks. Selle abil on kasutajatel lihtne luua optimeeritud rakendusi, suhelda piltide ja videotega reaalajas ning valida oma vajadustele vastav ideaalne algoritm.
Mõned populaarsed rakendused OpenCV sisaldab näotuvastust, automaatne näo jälgimine filmikunstis, sotsiaalmeedia filtrid,
auto numbrimärgi tuvastamineja CCTV jälgimine. OpenCV mooduli kasutamiseks Pythonis avage terminal ja tippige järgmine käsk:pip install opencv-python
Kuidas teisendada mis tahes kujutis Pythoni abil visandiks
Lemmikpildi digitaalseks visandiks teisendamiseks asetage see hõlpsaks viitamise eesmärgil samasse kausta uue Pythoni programmiga. Seejärel alustage oma programmi koostamist järgmiste sammudega.
See näidiskood on saadaval a GitHubi hoidla ja seda saate MIT-i litsentsi alusel tasuta kasutada.
Esimene samm on OpenCV mooduli importimine oma keskkonda. Kui OpenCV on saadaval, saate selle funktsioone kasutada erinevate ülesannete täitmiseks. Edastage oma pildifaili tee faili lugemata () funktsioon selle laadimiseks. Salvestage oma pilt muutujasse, mida nimetatakse pilt1 siin – edaspidiseks viitamiseks.
Salvestage akna pealkiri muutujas nimega akna_nimi. See on kasulik, kui otsustate kuvada pilti kasutades imshow() funktsiooni. See funktsioon nõuab kahte parameetrit: pealkirja ja kujutist, mida soovite kuvada.
importida cv2
pilt1 = cv2.imread('pilt.jpg')
akna_nimi = "Tegelik pilt"
cv2.imshow (akna_nimi, pilt1)
Kui olete soovitud pildi saanud, peate selle visandiks muutmiseks tegema viis toimingut. Esmalt teisendage värviline pilt halltooniks. Seda saate teha rakendusega cvtColor() funktsiooni. See funktsioon võtab sisse pildi, mille värve soovite muuta, ja teisenduskoodi, näiteks COLOR_BGR2GRAY.
gray_img = cv2.cvtColor (pilt1, cv2.COLOR_BGR2GRAY)
Kui teil on halltoonides pilt, pöörake selle värvid ümber. Siinkohal peate mõistma, kuidas arvuti kujutist moodustab. Pilt koosneb paljudest erineva intensiivsusega pisikestest pikslitest. Värvilisel pildil sisaldab iga piksel punast, rohelist ja sinist komponenti, millest igaühe intensiivsus varieerub vahemikus 0 kuni 255.
Halltoonides pildil on ainult hallid varjundid, seega on piksli intensiivsus vahemikus 0 kuni 1. Selle pildi pikslite intensiivsuse ümberpööramiseks edastage halltoonides kujutis bitwise_not() funktsiooni.
Nagu nimigi ütleb, inverteerib see funktsioon iga piksli väärtuse selle täiendavaks ekvivalendiks. Kõik pikslid, mis on suuremad kui 0, seatakse väärtusele 0 ja kõik pikslid, mis on võrdsed 0-ga, seatakse väärtusele 255.
invert = cv2.bitwise_not (grey_img)
Pärast pikslite intensiivsuse ümberpööramist saate pilti tasandada Gaussi hägususe abil. Gaussi hägustamise protsess kasutab Gaussi filtrit. Gaussi filter on madalpääsfilter, mis laseb läbi ainult madalaid sagedusi, eemaldades signaali või pildi kõrgsagedusliku komponendi.
OpenCV-d GaussianBlur() funktsioon aktsepteerib nelja parameetrit. Need on maatriksobjektid, mis toimivad lähtepildina, ksize (tuuma suurus) ja sigmaX (Gaussi kerneli standardhälve).
Oletame, et teie käes on füüsiline foto. Kui soovite seda hägustada, võite selle peale kanda vaha- või pärgamentpaberitükke. Võite ette kujutada tuuma selle läbipaistva paberitükina. Digitaalselt toimub see veidi teisiti. Digitaalpildi häguseks, teravamaks muutmiseks ja muude efektide rakendamiseks korrutate maatriksi pildi pikslite intensiivsusega.
Ksize on alati positiivne paaritu arv. Kerneli suuruse suurendamisel suureneb hägusus. SigmaX-i mõistmiseks eeldage, et kannate vaha paberile. Vaha pealekandmisel muutub paber ühtlaselt läbipaistvaks. Samamoodi peate hoidma tuuma väärtused konkreetse punkti (keskmise) lähedal. SigmaX väärtus määrab erinevuse pildi pikslite keskmiste ja muude väärtuste vahel.
Edastage ümberpööratud kujutis, tuuma suurus (21, 21) ja standardhälve 0 Gaussi hägususe funktsioonile:
hägusus = cv2.GaussianBlur (invert, (21, 21), 0)
Edastage udune pilt uuesti funktsioonile bitwise_not(), et see ümber pöörata:
invertedblur = cv2.bitwise_not (hägu)
Lõpuks kasutage jaga () funktsiooni ja teostada halltoonide pildimassiivi ja ümberpööratud häguse kujutise massiivi elementide kaupa jagamist skaalal 256.
sketch = cv2.divide (grey_img, invertedblur, scale=256.0)
Põhimõtteliselt täidab funktsioon järgmist toimingut:
defjagama(grey_img, b, invertedblur=256.0):
tagasi (grey_img * skaala) / invertedblur
Salvestage tulemus muutuja nimega sketch. Lõpliku pildi salvestamiseks edastage oma väljundfailile ja visandipildile nimi imwrite() funktsiooni. Selle kontrollimiseks võite kasutada funktsiooni imread(), et laadida salvestatud visandipilt, anda aknale pealkiri ja kuvada see funktsiooni imshow() abil.
Kasuta oodake () funktsioon, jättes 0-st edasi, et kuvada algne pildiaken ja loodud visandite aken, kuni vajutate mis tahes klahvi.
cv2.imwrite("sketch.jpeg", visand)
pilt = cv2.imread("sketch.jpeg")
akna_nimi ="Sketch image"
cv2.imshow (akna_nimi, pilt)
cv2.waitKey(0)
Viige kogu kood kokku ja teie programm on valmis.
Näidisväljund pildi visandiks teisendamiseks selle Pythoni programmi abil
Selle vapustava digitaalse visandi loomiseks saate valida kauni maastikupildi ja selle programmi kaudu käivitada.
Portreepildil genereerib programm järgmise digitaalse visandi.
Saate katsetada funktsiooni parameetritega vastavalt oma maitsele, et luua soovitud digitaalne eskiis.
Pilditöötlus ja arvutinägemine
Pilditöötlus ja arvutinägemine on kaks omavahel tihedalt seotud tehnoloogiavaldkonda. Mõlemad hõlmavad digitaalsete piltide muutmist soovitud tulemuste saavutamiseks. Pilditöötlus keskendub pildi täiustamisele, samas kui arvutinägemine otsib kujutisest mustreid ja objekte, et seda mõista.
Scikit-image on veel üks Pythoni teek, mis pakub laia valikut pilditöötlusfunktsioone. Sellel on mitu eelkompileeritud moodulit, filtreid, kihte, teisendusi ja palju muud. Kui otsite moodulit, mida kasutada süvaõppemudelite jaoks, nagu CNN ja RNN, võiksite uurida Torchvisioni.