Mercurial > ift6266
annotate transformations/gimp_script.py @ 27:0b9350998dbe
Added a contrast.py script difining the Contrast transformation class
author | Xavier Glorot <glorotxa@iro.umontreal.ca> |
---|---|
date | Fri, 29 Jan 2010 14:10:10 -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) |