annotate transformations/gimp_script.py @ 41:fdb0e0870fb4

Beaucoup de modifications à pipeline.py pour généraliser et un début de visualisation, et créé un wrapper (run_pipeline.py) pour appeler avec GIMP. - Modifications à pipeline.py - Wrappé la boucle du pipeline dans une classe - Isolé le problème de itérer sur les batches et les complexités dans des itérateurs - Permet d'avoir des ordres compliqués de batch (plusieurs sources), de complexités - Maintenant regenerate_parameters() est appelé pour chaque image. - Command line arguments avec getopt(). On pourra rajouter des options ainsi. - run_pipeline.py - Le but est de permettre de passer des arguments. Pas facile (pas trouvé comment de façon simple) avec la command line pour appeler GIMP en mode batch. C'est un hack ici. - Le but ultime est de permettre de lancer les jobs sur les clusters avec dbidispatch en précisant les options (diff. pour chaque job) sur la ligne de commande.
author fsavard
date Wed, 03 Feb 2010 17:08:27 -0500
parents d511445f19da
children 7f5133e1fd23
rev   line source
7
f2d46bb3f2d5 Ajout de filtres GIMP (transformations/gimp_script.py)
boulanni <nicolas_boulanger@hotmail.com>
parents:
diff changeset
1 #!/usr/bin/env python
f2d46bb3f2d5 Ajout de filtres GIMP (transformations/gimp_script.py)
boulanni <nicolas_boulanger@hotmail.com>
parents:
diff changeset
2 # coding: utf-8
f2d46bb3f2d5 Ajout de filtres GIMP (transformations/gimp_script.py)
boulanni <nicolas_boulanger@hotmail.com>
parents:
diff changeset
3
f2d46bb3f2d5 Ajout de filtres GIMP (transformations/gimp_script.py)
boulanni <nicolas_boulanger@hotmail.com>
parents:
diff changeset
4 '''
12
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
5 Filtres GIMP sous Python
7
f2d46bb3f2d5 Ajout de filtres GIMP (transformations/gimp_script.py)
boulanni <nicolas_boulanger@hotmail.com>
parents:
diff changeset
6 Auteur: Nicolas Boulanger-Lewandowski
f2d46bb3f2d5 Ajout de filtres GIMP (transformations/gimp_script.py)
boulanni <nicolas_boulanger@hotmail.com>
parents:
diff changeset
7 Date: Hiver 2010
f2d46bb3f2d5 Ajout de filtres GIMP (transformations/gimp_script.py)
boulanni <nicolas_boulanger@hotmail.com>
parents:
diff changeset
8
12
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
9 run with:
7
f2d46bb3f2d5 Ajout de filtres GIMP (transformations/gimp_script.py)
boulanni <nicolas_boulanger@hotmail.com>
parents:
diff changeset
10 gimp -i --batch-interpreter python-fu-eval --batch - < gimp_script.py
f2d46bb3f2d5 Ajout de filtres GIMP (transformations/gimp_script.py)
boulanni <nicolas_boulanger@hotmail.com>
parents:
diff changeset
11
12
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
12 inclure pour terminer gimp à la fin du script:
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
13 pdb.gimp_quit(0)
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
14
7
f2d46bb3f2d5 Ajout de filtres GIMP (transformations/gimp_script.py)
boulanni <nicolas_boulanger@hotmail.com>
parents:
diff changeset
15 Décommenter les lignes appropriées pour différents filtres
f2d46bb3f2d5 Ajout de filtres GIMP (transformations/gimp_script.py)
boulanni <nicolas_boulanger@hotmail.com>
parents:
diff changeset
16 Les plug-ins de GIMP et leurs paramètres sont disponibles sous GIMP, menu Help > Plug-in Browser (toujours ignorer le paramètre run-mode).
f2d46bb3f2d5 Ajout de filtres GIMP (transformations/gimp_script.py)
boulanni <nicolas_boulanger@hotmail.com>
parents:
diff changeset
17 Les autres fonctions du programme sont dans la Procedure DataBase (PDB) dans le menu Help > Procedure Browser.
f2d46bb3f2d5 Ajout de filtres GIMP (transformations/gimp_script.py)
boulanni <nicolas_boulanger@hotmail.com>
parents:
diff changeset
18 '''
f2d46bb3f2d5 Ajout de filtres GIMP (transformations/gimp_script.py)
boulanni <nicolas_boulanger@hotmail.com>
parents:
diff changeset
19
f2d46bb3f2d5 Ajout de filtres GIMP (transformations/gimp_script.py)
boulanni <nicolas_boulanger@hotmail.com>
parents:
diff changeset
20 from gimpfu import *
12
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
21 import numpy
7
f2d46bb3f2d5 Ajout de filtres GIMP (transformations/gimp_script.py)
boulanni <nicolas_boulanger@hotmail.com>
parents:
diff changeset
22
12
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
23 class GIMPTransformation():
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
24 def __init__(self):
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
25 self.img = gimp.Image(32, 32, GRAY)
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
26 self.img.disable_undo()
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
27 self.layer1 = gimp.Layer(self.img, "layer1", 32, 32, GRAY_IMAGE, 100, NORMAL_MODE)
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
28 self.img.add_layer(self.layer1, 0)
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
29 self.dest_rgn = self.layer1.get_pixel_rgn(0, 0, 32, 32, True)
7
f2d46bb3f2d5 Ajout de filtres GIMP (transformations/gimp_script.py)
boulanni <nicolas_boulanger@hotmail.com>
parents:
diff changeset
30
12
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
31 def transform_image(self, image):
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
32 ''' si la ligne suivante échoue, upgrader à GIMP v.2.6.7
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
33 OU utiliser une des 2 versions commentées ci-après (10x plus lent) '''
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
34 self.dest_rgn[:,:] = (image.T*255).astype(numpy.uint8).tostring()
7
f2d46bb3f2d5 Ajout de filtres GIMP (transformations/gimp_script.py)
boulanni <nicolas_boulanger@hotmail.com>
parents:
diff changeset
35
12
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
36 #for i in range(32):
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
37 # self.dest_rgn[i,:] = (image[i,:]*255).astype(numpy.uint8).tostring()
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
38
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
39 #for i in range(32):
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
40 # for j in range(32):
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
41 # self.dest_rgn[i,j] = chr(int((image[i,j] *255)))
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
42
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
43 self.layer1.flush()
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
44 self.layer1.update(0, 0, 32, 32)
7
f2d46bb3f2d5 Ajout de filtres GIMP (transformations/gimp_script.py)
boulanni <nicolas_boulanger@hotmail.com>
parents:
diff changeset
45
12
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
46 ''' application des filtres '''
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
47 #pdb.plug_in_noisify(self.img, self.layer1, 0, 0.4, 0, 0, 0)
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
48 #pdb.plug_in_c_astretch(self.img, self.layer1)
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
49 #pdb.plug_in_emboss(self.img, self.layer1, 10, 30, 5, 0)
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
50 #pdb.plug_in_applylens(self.img, self.layer1, 2, 1, 0, 0)
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
51 #pdb.plug_in_blur(self.img, self.layer1)
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
52 pdb.plug_in_gauss_rle(self.img, self.layer1, 9, 1, 0)
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
53
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
54 ''' si la ligne suivante échoue, upgrader à GIMP v.2.6.7
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
55 OU utiliser la version commentée ci-après (10x plus lent) '''
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
56 image = numpy.fromstring(self.dest_rgn[:,:], 'UInt8').reshape((32,32)).T / 255.0
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
57
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
58 #image = image*0
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
59 #for i in range(32):
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
60 # for j in range(32):
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
61 # image[i,j] = ord(self.dest_rgn[i,j]) /255.0
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
62
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
63 return image
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
64
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
65 # TEST
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
66 if 1:
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
67 im = numpy.zeros((32,32))
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
68 for i in range(32):
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
69 for j in range(32):
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
70 im[i,j] = i*j/(32.*32.)
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
71
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
72 test = GIMPTransformation()
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
73 #for i in range(100):
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
74 im = test.transform_image(im)
7
f2d46bb3f2d5 Ajout de filtres GIMP (transformations/gimp_script.py)
boulanni <nicolas_boulanger@hotmail.com>
parents:
diff changeset
75
12
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
76 import pylab
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
77 pylab.imshow(im)
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
78 pylab.show()
7
f2d46bb3f2d5 Ajout de filtres GIMP (transformations/gimp_script.py)
boulanni <nicolas_boulanger@hotmail.com>
parents:
diff changeset
79
12
d511445f19da appliquer filtres gimp sur des arrays numpy plutot que sur des fichiers et structure classe
boulanni <nicolas_boulanger@hotmail.com>
parents: 7
diff changeset
80 pdb.gimp_quit(0)