-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathseam_carving.py
44 lines (39 loc) · 1.39 KB
/
seam_carving.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# -*- coding: utf-8 -*-
from PIL import Image
import seam
import seam_treatment
import agrandir
def horizontal_carving(im, img):
cm = seam.calculate_cost_matrix(img)
sm = seam.detect_seam(cm)
#for elm in sm: #pour chaque element du seam (de la forme (x,y))
# im.load()[elm[0],elm[1]]= 255, 0, 0
#im.show()
im = seam_treatment.remove_seam(im,sm)
img = seam_treatment.remove_seam(img,sm)
return (im, img)
def vertical_carving(im,img):
im = im.rotate(-90, expand=True)
img = img.rotate(-90, expand=True)
im, img = horizontal_carving(im,img)
im = im.rotate(90, expand=True)
img = img.rotate(90, expand=True)
return (im, img)
def add_horizontal_carving(im, img):
cm = seam.calculate_cost_matrix(img)
sm = seam.detect_seam(cm)
#for elm in sm: #pour chaque element du seam (de la forme (x,y))
# im.load()[elm[0],elm[1]]= 255, 0, 0
#im.show()
im = agrandir.add_seam_image(im,sm)
img = agrandir.add_seam_gradient(img,sm)
return (im, img)
def add_vertical_carving(im, img):
im = im.rotate(-90, expand=True)
img = img.rotate(-90, expand=True)
im, img = add_horizontal_carving(im, img)
im = im.rotate(90, expand=True)
img = img.rotate(90, expand=True)
return (im, img)
if __name__ == "__main__":
horizontal_carving(Image.open('1.jpg'), Image.open('1g.jpg'))