Realizarea unei schițe frumoase necesită mult timp și efort. Din fericire, programarea a evoluat, astfel încât acum puteți transforma cu ușurință imaginile și puteți crea modele frumoase. O tehnică impresionantă pe care o puteți realiza este să convertiți o imagine într-o schiță digitală.
Deși o schiță mecanică nu va arăta exact ca propriul desen în creion, rezultatul merită totuși experimentat. Aflați cum să programați o astfel de aplicație folosind modulul OpenCV în limbajul Python foarte prietenos.
Modulul OpenCV
OpenCV este o bibliotecă open-source dezvoltată și întreținută de Intel cu metode de viziune computerizată utilizate pentru procesarea imaginilor și viziunea computerizată. Facilitează pentru utilizatori să creeze aplicații optimizate, să interacționeze cu imagini și videoclipuri în timp real și să selecteze algoritmul ideal pentru nevoile lor.
Unele dintre aplicațiile populare ale OpenCV include detectarea feței, urmărire automată a feței în cinematografie, filtre de rețele sociale, recunoașterea plăcuței de înmatriculare a mașinii, și monitorizare CCTV. Pentru a utiliza modulul OpenCV în Python, deschideți terminalul și tastați următoarea comandă:
pip install opencv-python
Cum să convertiți orice imagine într-o schiță folosind Python
Pentru a converti imaginea preferată într-o schiță digitală, începeți prin a o plasa în același folder ca un nou program Python, pentru o referire ușoară. Apoi începeți să vă construiți programul folosind următorii pași.
Acest exemplu de cod este disponibil în a Depozitul GitHub și este gratuit pentru utilizare sub licența MIT.
Primul pas este să importați modulul OpenCV în mediul dvs. Odată ce OpenCV este disponibil, puteți utiliza funcționalitatea acestuia pentru a efectua diverse sarcini. Treceți calea fișierului imagine în fișierul citesc() funcția de încărcare. Stocați imaginea într-o variabilă numită imagine1 aici — pentru referințe viitoare.
Stocați titlul ferestrei într-o variabilă numită numele_ferestrei. Acest lucru va fi util atunci când alegeți să afișați imaginea folosind imshow() funcţie. Această funcție necesită doi parametri: titlul și imaginea pe care doriți să o afișați.
import cv2
imagine1 = cv2.imread(„image.jpg”)
window_name = „Imagine reală”
cv2.imshow (nume_fereastră, imagine1)
Odată ce aveți imaginea dorită, trebuie să efectuați cinci operațiuni pentru a o transforma într-o schiță. Mai întâi, convertiți imaginea color în tonuri de gri. Puteți face acest lucru cu cvtColor() funcţie. Această funcție preia imaginea ale cărei culori doriți să le modificați și un cod de conversie, cum ar fi CULOARE_BGR2GRAY.
grey_img = cv2.cvtColor (imagine1, cv2.COLOR_BGR2GRAY)
Odată ce aveți o imagine în tonuri de gri, inversați-i culorile. În acest moment, trebuie să înțelegeți modul în care un computer formează o imagine. O imagine este formată din mulți pixeli minusculi cu intensități diferite. Într-o imagine color, fiecare pixel conține componente roșii, verzi și albastre, fiecare cu o intensitate care variază de la 0 la 255.
Într-o imagine în tonuri de gri, există doar nuanțe de gri, astfel încât intensitatea unui pixel variază între 0 și 1. Pentru a inversa intensitățile pixelilor acestei imagini, treceți imaginea în tonuri de gri către bitwise_not() funcţie.
După cum sugerează și numele, această funcție inversează valoarea fiecărui pixel la echivalentul său complementar. Toți pixelii care sunt mai mari decât 0 sunt setați la 0, iar toți pixelii care sunt egali cu 0 sunt setați la 255.
inversare = cv2.bitwise_not (grey_img)
După inversarea intensităților pixelilor, puteți netezi imaginea cu ajutorul Gaussian Blur. Procesul Gaussian Blur folosește un filtru Gaussian. Un filtru gaussian este un filtru trece-jos care permite trecerea doar a frecvențelor joase, eliminând componenta de înaltă frecvență a unui semnal sau a unei imagini.
OpenCV-uri GaussianBlur() funcția acceptă patru parametri. Acestea sunt un obiect matrice care acționează ca imagine sursă, ksize (dimensiunea nucleului) și sigmaX (deviația standard a nucleului gaussian).
Să presupunem că aveți o fotografie fizică în mână. Dacă vrei să-l estompezi, poți aplica peste el bucăți de ceară sau hârtie de pergament. Vă puteți imagina nucleul ca acest fragment de hârtie transparent. Digital, acest lucru se întâmplă puțin diferit. Pentru a estompa, a clarifica și a aplica alte efecte pe o imagine digitală, înmulțiți o matrice cu intensitatea pixelilor imaginii.
ksize este întotdeauna un număr impar pozitiv. Pe măsură ce creșteți dimensiunea nucleului, neclaritatea crește. Pentru a înțelege sigmaX presupunem că aplicați ceară pe o hârtie. Pe măsură ce aplicați ceară, hârtia devine uniform translucidă. În mod similar, trebuie să păstrați valorile nucleului aproape de un anumit punct (media). Valoarea sigmaX definește diferența dintre media și alte valori ale pixelilor dintr-o imagine.
Treceți imaginea inversată, dimensiunea nucleului ca (21, 21) și 0 abatere standard la funcția Gaussian Blur:
blur = cv2.GaussianBlur (invers, (21, 21), 0)
Transmiteți din nou imaginea neclară la funcția bitwise_not() pentru a o inversa:
invertedblur = cv2.bitwise_not (blur)
În cele din urmă, utilizați divide() funcția și să efectueze divizarea pe element a matricei de imagini în tonuri de gri și a matricei de imagine încețoșată inversată cu o scară de 256.
schiță = cv2.divide (grey_img, invertedblur, scale=256.0)
În esență, funcția efectuează următoarea operație:
defdivide(grey_img, b, invertedblur=256.0):
întoarcere (grey_img * scară) / invertedblur
Stocați rezultatul într-o variabilă numită schiță. Pentru a salva imaginea finală, transmiteți un nume pentru fișierul dvs. de ieșire și imaginea schiță la imwrite() funcţie. Pentru a o verifica, puteți folosi funcția imread() pentru a încărca imaginea de schiță salvată, pentru a da un titlu de fereastră și pentru a o afișa folosind funcția imshow().
Folosește tasta asteptare() funcția prin trecerea 0 pentru a afișa fereastra de imagine originală și fereastra de schiță generată până când apăsați orice tastă.
cv2.imwrite(„sketch.jpeg”, schiță)
imagine = cv2.imread(„sketch.jpeg”)
window_name =„Imagine schiță”
cv2.imshow (nume_fereastră, imagine)
cv2.waitKey(0)
Reunește tot codul și ai programul gata.
Exemplu de rezultat al conversiei unei imagini într-o schiță utilizând acest program Python
Puteți alege o imagine frumoasă peisaj și o puteți rula prin program pentru a genera această schiță digitală uimitoare.
Pe o imagine portret, programul generează următoarea schiță digitală.
Puteți experimenta cu parametrii funcției după bunul plac pentru a genera schița digitală dorită.
Procesarea imaginii și viziunea computerizată
Procesarea imaginilor și viziunea computerizată sunt două domenii strâns legate de tehnologie. Ambele implică modificarea imaginilor digitale pentru a obține rezultatele dorite. Procesarea imaginii se concentrează pe îmbunătățirea unei imagini, în timp ce viziunea computerizată caută să găsească modele și obiecte în cadrul unei imagini pentru a o înțelege.
Scikit-image este o altă bibliotecă Python care oferă o mare varietate de funcții de procesare a imaginii. Are mai multe module precompilate, filtre, straturi, transformări și multe altele. Dacă sunteți în căutarea unui modul de utilizat pentru modele de învățare profundă, cum ar fi CNN și RNN, poate doriți să explorați Torchvision.