annotate tools/pil_filter.py @ 3:952a37c4ffc8 default tip

contact added
author tomasz-bednarz
date Tue, 26 Nov 2013 13:17:03 +1100
parents a44112280169
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
1 import Image
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
2 import ImageFilter
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
3 import ImageChops
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
4 import os
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
5 import sys
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
6
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
7 def isodd(num):
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
8 return num & 1 and True or False
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
9
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
10 def main():
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
11 numArgs = len(sys.argv)
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
12
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
13 if numArgs < 2:
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
14 print "USAGE: provide input, output, functions, parameters"
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
15 exit(1)
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
16
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
17 listOfValues = sys.argv[1:]
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
18
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
19 try:
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
20 imageIn = Image.open(listOfValues[0])
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
21 except IOError:
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
22 print "cannot open: ", listOfValues[0]
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
23
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
24 if listOfValues[2] == "median":
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
25 size = int(listOfValues[3]);
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
26 # prevent size to be even
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
27 if size & 1 == False:
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
28 size = size + 1
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
29 imageMedian = imageIn.filter(ImageFilter.MedianFilter(size))
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
30 imageOut = imageMedian.save(listOfValues[1], listOfValues[4])
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
31 # imageMedian.show()
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
32 print "Applied a median filter of the given size."
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
33 elif listOfValues[2] == "emboss":
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
34 imageEmboss = imageIn.filter(ImageFilter.EMBOSS)
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
35 imageOut = imageEmboss.save(listOfValues[1], listOfValues[3])
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
36 # imageEmboss.show()
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
37 print "Applied an emboss filter on the image."
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
38 elif listOfValues[2] == "blur":
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
39 imageBlur = imageIn.filter(ImageFilter.BLUR)
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
40 imageOut = imageBlur.save(listOfValues[1], listOfValues[3])
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
41 # imageBlur.show()
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
42 print "Applied a blur filter on the image."
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
43 elif listOfValues[2] == "contour":
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
44 imageContour = imageIn.filter(ImageFilter.CONTOUR)
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
45 imageOut = imageContour.save(listOfValues[1], listOfValues[3])
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
46 # imageContour.show()
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
47 print "Applied a contour filter on the image."
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
48 elif listOfValues[2] == "detail":
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
49 imageDetail = imageIn.filter(ImageFilter.DETAIL)
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
50 imageOut = imageDetail.save(listOfValues[1], listOfValues[3])
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
51 # imageDetail.show()
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
52 print "Applied a detial filter on the image."
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
53 elif listOfValues[2] == "edge_enhance":
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
54 imageEdgeEnhance = imageIn.filter(ImageFilter.EDGE_ENHANCE)
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
55 imageOut = imageEdgeEnhance.save(listOfValues[1], listOfValues[3])
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
56 # imageEdgeEnhance.show()
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
57 print "Applied an edge enhance filter on the image."
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
58 elif listOfValues[2] == "edge_enhance_more":
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
59 imageEdgeEnhanceMore = imageIn.filter(ImageFilter.EDGE_ENHANCE_MORE)
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
60 imageOut = imageEdgeEnhanceMore.save(listOfValues[1], listOfValues[3])
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
61 # imageEdgeEnhanceMore.show()
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
62 print "Applied an eddge enhance more filter on the image."
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
63 elif listOfValues[2] == "find_edges":
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
64 imageFindEdges = imageIn.filter(ImageFilter.FIND_EDGES)
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
65 imageOut = imageFindEdges.save(listOfValues[1], listOfValues[3])
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
66 # imageFindEdges.show()
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
67 print "Applied a find_edges filter on the image."
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
68 elif listOfValues[2] == "sharpen":
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
69 imageSharpen = imageIn.filter(ImageFilter.SHARPEN)
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
70 imageOut = imageSharpen.save(listOfValues[1], listOfValues[3])
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
71 # imageSharpen.show()
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
72 print "Applied a sharpen filter on the image."
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
73 elif listOfValues[2] == "smooth":
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
74 imageSmooth = imageIn.filter(ImageFilter.SMOOTH)
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
75 imageOut = imageSmooth.save(listOfValues[1], listOfValues[3])
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
76 # imageSmooth.show()
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
77 print "Applied a smooth filter on the image."
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
78 elif listOfValues[2] == "smooth_more":
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
79 imageSmoothMore = imageIn.filter(ImageFilter.SMOOTH_MORE)
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
80 imageOut = imageSmoothMore.save(listOfValues[1], listOfValues[3])
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
81 # imageSmoothMore.show()
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
82 print "Applied a smooth_more filter on the image."
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
83 elif listOfValues[2] == "min":
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
84 size = int(listOfValues[3])
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
85 # prevent size to be even
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
86 if size & 1 == False:
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
87 size = size + 1
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
88 imageMin = imageIn.filter(ImageFilter.MinFilter(size))
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
89 imageOut = imageMin.save(listOfValues[1], listOfValues[4])
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
90 # imageMin.show()
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
91 print "Applied a min filter of the given size on the image"
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
92 elif listOfValues[2] == "max":
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
93 size = int(listOfValues[3])
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
94 # prevent size to be even
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
95 if size & 1 == False:
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
96 size = size + 1
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
97 imageMax = imageIn.filter(ImageFilter.MaxFilter(size))
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
98 imageOut = imageMax.save(listOfValues[1], listOfValues[4])
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
99 # imageMax.show()
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
100 print "Applied a max filter of the given size on the image"
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
101 elif listOfValues[2] == "mode":
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
102 size = int(listOfValues[3])
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
103 # prevent size to be even
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
104 if size & 1 == False:
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
105 size = size + 1
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
106 imageMode = imageIn.filter(ImageFilter.ModeFilter(size))
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
107 imageOut = imageMode.save(listOfValues[1], listOfValues[4])
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
108 # imageMode.show()
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
109 print "Applied a mode filter of the given size on the image"
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
110 elif listOfValues[2] == "invert":
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
111 imageInvert = ImageChops.invert(imageIn)
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
112 imageOut = imageInvert.save(listOfValues[1], listOfValues[3])
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
113 # imageInvert.show()
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
114 print "Inverted the image."
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
115
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
116 if __name__ == "__main__":
a44112280169 Uploaded
tomasz-bednarz
parents:
diff changeset
117 main()