-
Notifications
You must be signed in to change notification settings - Fork 84
Pillow
Dirbsime su python PIL biblioteka. Diegiasi pip install Pillow. Pradėkime nuo paprasto nuotraukos nuskaitymo ir atvaizdavimo ekrane:
from PIL import Image
im = Image.open("dog.jpg")
im.show()
susikūrėme objektą im, kuris turi daugybę įvairių metodų, jų tarpe ir show(), kuris tiesiog atspausdina nuotrauką ekrane.
Išsaugokime nuotrauką kitu pavadinimu:
from PIL import Image
im = Image.open("dog.jpg")
im.save('large_dog.jpg')
šalia dog.jpg atsirado failas large_dog.jpg. Tai tik paprastas pavyzdys, prieš tai galime atlikti įvairiausias modifikacijas, ir išsaugoti kitame formate, pvz .png
from PIL import Image
im = Image.open("dog.jpg")
print(im.format, im.size, im.mode)
# JPEG (590, 428) RGB
from PIL import Image
size = 128, 128
im = Image.open("dog.jpg")
im.thumbnail(size)
im.show()
sukuria miniatiūrą (thumbnail). Metodas išlaiko paveikslėlio proporcijas.
from PIL import Image
im = Image.open("dog.jpg")
box = (100, 100, 300, 300)
region = im.crop(box)
region.show()
Padaro iškarpą pagal nurodytas koordinates. Koordinačių sistemos pradžia (0,0) yra paveikslėlio viršutiniame-kairiame kampe. Šiuo atveju buvo nurodyti 2 taškai 100,100 ir 300,300.
from PIL import Image
im = Image.open("dog.jpg")
im.transpose(Image.FLIP_TOP_BOTTOM).show()
Transformuoja paveikslėlį pagal nurodytą parametrą. Galimi parametrai - Image.FLIP_LEFT_RIGHT, Image.FLIP_TOP_BOTTOM, Image.ROTATE_90, Image.ROTATE_180,Image.ROTATE_270, Image.TRANSPOSE
from PIL import Image
im = Image.open("dog.jpg")
im.resize((500,200)).show()
pakeičia nuotraukos dydį pagal nurodytas reikšmes.
ant nuotraukos uždeda kitą nuotrauką. Tarkime turime logotipą su permatomu fonu:
Logotipo .mode turi rodyti reikšmę RGBA, kur A yra alpha channel, kuris nurodo, koks yra pikselio permatomumas. Sakykime, kad mums reikia tos nuotraukos su logo:
from PIL import Image
dog = Image.open('dog.jpg')
logo = Image.open('logo.png')
logo_location = (0, 0, logo.size[0], logo.size[1])
dog.paste(logo, logo_location, logo)
dog.show()
.paste parametrai:
- logo - mūsų logo
- logo_location - vieta, kur turės būti įklijuotas logo. Svarbu atsiminti, kad vieta turi būti tokio pat dydžio, kaip ir pats logo, todėl sukurtame tuple logo_location naudojame kintamuosius.
- trečias parametras yra Image objektas, kurio alpha channel bus naudojamas kaip kaukė (mask). Šiuo atveju tai yra tas pats logo. Jeigu norėtumėm užklijuoti paprastą nuotrauką ant kitos nuotraukos viršaus, paskutinio parametro naudoti nereikia.
from PIL import Image, ImageFilter
dog = Image.open('dog.jpg')
im1 = dog.filter(ImageFilter.BLUR)
im1.show()
Reikės papildomai importuoti ImageFilter modulį. Galimi filtrų variantai: BLUR, CONTOUR, DETAIL, EDGE_ENHANCE, EDGE_ENHANCE_MORE, EMBOSS, FIND_EDGES, SMOOTH, SMOOTH_MORE, SHARPEN. Apie filtrus daugiau informacijos rasite čia
sukuria objektą, kuriame saugomos visos pikselių reikšmės:
from PIL import Image, ImageFilter
dog = Image.open('dog.jpg')
data = dog.getdata()
for i in range(5):
print(data[i])
# (89, 142, 72)
# (89, 142, 70)
# (90, 143, 71)
# (90, 148, 74)
# (88, 144, 69)
leidžia pakeisti paveikslėlio pikselius kitomis reikšmėmis:
from PIL import Image, ImageFilter
dog = Image.open('dog.jpg')
new_pixel = (0, 0, 0)
new_data = []
for i in range(10000):
new_data.append(new_pixel)
dog.putdata(new_data)
dog.show()
viršuje matome 10000 juodų pikselių.
from PIL import Image, ImageFilter
dog = Image.open('dog.jpg')
dog_bw = dog.convert("L")
dog_bw.show()
Konverteris tarp "RGB", "RGBA", "L"(juoda-balta), ir daug kitų nuotraukų tipų.
papildomai importavus ImageEnchance, galime:
from PIL import Image, ImageEnhance
dog = Image.open('dog.jpg')
enh = ImageEnhance.Contrast(dog)
enh.enhance(1.3).show()
#jeigu norime išsaugoti:
enh.enhance(1.3).save('test.png')
reguliuoti kontrastą, šiuo atveju pridėjome 30%.
- .Color reguliuoja spalvingumą
- .Sharpness - aštrumą
- .Brightness - ryškumą
© Donatas Noreika ir Jotautas Treigys
Dekoratoriai
Iteratoriai ir generatoriai
RegEx
Pillow
NumPy
Pandas
- Pandas I
- Užduotys I
- Atsakymai I
- Pandas II
- Užduotys II
- Atsakymai II
- Pandas III
- Užduotys III
- Atsakymai III
Seaborn
Mašininis mokymasis
- 1 Tiesinės regresijos modelis
- 1 Užduotis
- 1 Atsakymas
- 2 Modeliai - klasifikatoriai
- 2 Užduotis
- 2 Atsakymas
- 3 Modeliai praktikoje
- 3 Užduotis (atnaujinta), atsakymas
- 3 Užduotis
- 3 Atsakymas (kodas su komentarais)
Requests, JSON, API
Web Scraping (Beautiful Soup)
Duomenų bazės
- SQL 1
- Užduotys
- Atsakymai
- SQL 2
- Užduotys
- Atsakymai
- SQL 3
- Užduotys
- Atsakymai
- SQL 4
- Užduotis
- SQL per Python
- Užduotis
- ORM 1
- Užduotys
- ORM 2
- Užduotis
- Atsakymas
Flask
- Įžanga
- Užduotys
- I dalis
- Užduotis
- I dalies kodas (atsakymas)
- II dalis
- Užduotis
- Atsakymas (kodas)
- III dalis
- Užduotis
- Atsakymas
- IV dalis
- Užduotis
- Atsakymas
- Flask Many2one, CRUD
- Flask One2many, many2many CRUD
- Flask: REST API kūrimas
- Flask: API su One2many (kodas)
- Flask: vartotojai
- Flask: nuotraukos pridėjimas, admin puslapis, puslapiavimas
- Flask: password reset, error pages
- Flask: projekto sutvarkymas
- Flask diegimas į serverį
Django
- 1. Įžanga, Modeliai
- 2. Administratoriaus svetainė
- 3. Šablonai
- 4. Views
- 5. Puslapiavimas, Paieška, Nuotraukos
- 6. Autorizacija
- 7. Vartotojai II, HTML laukai
- 8. Registracija, Formos
- 9. Vartotojo profilis
- 10. Create, Update, Delete rodinių klasės
- 11. Vertimai
- Užduotis: Autoservisas
- Biblioteka: kodas iki 6-tos dalies
- Biblioteka: kodas nuo 6-tos dalies
- Django diegimas į serverį
- Django diegimas į serverį 2
Django REST
Odoo
- Kurso programa: projektų valdymas
- 1 pamoka
- 2 pamoka
- 3 pamoka
- 4 pamoka
- 5 pamoka
- 6 pamoka
- 7 pamoka
- 8 pamoka
- 9 pamoka
Linux