Traitement Image jpeg

Moderator: Mod

Traitement Image jpeg

Postby Manu404 » Thu Oct 09, 2008 2:29 pm

Voila je poste ceci suite a la proposition que j'avais fait dans le topic sur le même sujet mais en Java.
Pour pouvoir le faire fonctionner il vous faut Pil (Python Image Library)
Sa s'installe en trois clics de souris.
Pour ceux qui ne sont pas encore au courant voila la version 2.6 de Python sortie il y a 1 semaine :

Python 2.6:
[url=http://www.python.org/ftp/python/2.6/Python-2.6.tgz]Python 2.6 compressed source tarball (for Linux, Unix or OS X)[/url]
[url=http://www.python.org/ftp/python/2.6/Python-2.6.tar.bz2]Python 2.6 bzipped source tarball (for Linux, Unix or OS X, more compressed)[/url]
[url=http://www.python.org/ftp/python/2.6/python-2.6.msi]Python 2.6 Windows installer (Windows binary)[/url]
(Avant d'installer la nouvelle version désinstaller la précédente !!!!!!!! )

Pil 1.1.6 :
[url=http://effbot.org/downloads/Imaging-1.1.6.tar.gz]Python Imaging Library 1.1.6 Source Kit (all platforms)[/url]
[url=http://effbot.org/downloads/PIL-1.1.6.win32-py2.5.exel]Python Imaging Library 1.1.6 for Python 2.5 (Windows only)[/url]
[url=http://effbot.org/downloads/PIL-1.1.6.win32-py2.6.exe]Python Imaging Library 1.1.6 for Python 2.6 (Windows only)[/url]

Si vous posedez déja python et/ou Pil il n'est pas nécessaire de les réinstaller.

Voici le script :
PS : Je l'ai fait a la bourrin, il fonctionne, mais si vous voulez l'inclure dans un autre programme il faudras le remodeller pas mal
[code:1:8f16424fa3]
#Importation de modules
import Image
import os

#Initialisation des variables
global dat, pixel, liste_pixel
x,y, xmax, ymax, c,temp,s= 0, 0, 100, 30, 0,0,''
liste_pixel=[]
liste_ascii=[]
liste_morse=[]
morse=''

#Detection des pixells en fonction du code RVB du pixell
def read_line():
global x, y, xmax, ymax, morse
while (x<xmax):
pixel=dat[x,y]
if (pixel>(200,200,200)):
liste_pixel.append((x,y))
morse=morse+'0'
if (pixel<(200,200,200)):
morse=morse+'1'
x=x+1
x=0
if (y<ymax):
y=y+1

#Ouverture de l'image et appel de la fonction de lecture
im = Image.open("image.jpg")
dat=im.load()
while (y<ymax):
read_line()
c=c+1

#Créé une liste contenant les valeurs des espaces entres chaques pixell blanc
c=0
while (c<len(morse)):
if (morse[c]=="1"):
temp=temp+1
c=c+1
else:
liste_ascii.append(temp)
temp=0
c=c+1

#Converti la distance entre chaque pixell blanc par un symbole
c=0
while (c<len(liste_ascii)):
if (liste_ascii[c]==31):
#liste_morse.append(s)
c=c+1
s=s+"/"
elif (liste_ascii[c]==44):
s=s+"-"
c=c+1
elif (liste_ascii[c]==45):
s=s+"."
c=c+1
else :
print liste_ascii[c]
print "Couleur inconnue"
c=c+1

#Affiche le resultat
print s
[/code:1:8f16424fa3]

Pour l'utiliser avec un autre format, il suffit d'ouvrir le fichier en question avec paint, de l'enregistré en jpeg. L'image doit avoir comme nom : "image.jpg"
Ce script permet de directement trouver la reponse a un challenge, mais ce n'tes pas pour cela que je l'ai posté et je vous fait confiance, vous êtes assez grand que pour ne pas "tricher".

Bonne chance !

.
User avatar
Manu404
 
Posts: 2219
Joined: Tue Feb 26, 2008 3:44 pm
Location: ::1:

Postby darksuncloud » Thu Oct 09, 2008 4:47 pm

Sympas tout ca manu, merci!
Pour python, je savais pas, yavait pas un 3.0 qui devait venir?
User avatar
darksuncloud
Projets
 
Posts: 311
Joined: Mon Oct 15, 2007 7:57 pm

Postby THE-DEATH » Thu Oct 09, 2008 5:18 pm

Ils ont sortie la version 3.0rc1 en septemble, si c'est ce font tu parles
User avatar
THE-DEATH
 
Posts: 971
Joined: Wed Jul 23, 2008 10:49 am
Location: 127.0.0.1

Postby darksuncloud » Thu Oct 09, 2008 6:35 pm

Ah, oui, sa doit etre sa...
sinon, pour la taille, pas besoin de la prédéfinir, on utilise:
[code:1:0c0fe8c9dc]
xmax = im.size[0]
ymax = im.size[1][/code:1:0c0fe8c9dc]
Et comme sa le code peut etre utiliser pour d'autres images que celle du challenge...
User avatar
darksuncloud
Projets
 
Posts: 311
Joined: Mon Oct 15, 2007 7:57 pm

Postby Manu404 » Thu Oct 09, 2008 9:15 pm

Pour la version 3.0 je la recommande pas
Pourquoi :
- Les scripts 2.x ne sont pas compatibles a 100% (différence au niveau des chaines et des listes)
- Sa plante tout le temp (je vous assure)
- La plsupart des bibliothéques ne sont pas compatibles avec python 3.x

Attendez d'avoir une release correcte avant de l'utiliser.
Restez sous 2.5 ou 2.6 c'est trés bien !
User avatar
Manu404
 
Posts: 2219
Joined: Tue Feb 26, 2008 3:44 pm
Location: ::1:

Postby darksuncloud » Thu Oct 09, 2008 9:37 pm

Ok, bah moi jviens de mettre la 2.6.
User avatar
darksuncloud
Projets
 
Posts: 311
Joined: Mon Oct 15, 2007 7:57 pm

Postby TorTukiTu » Fri Oct 10, 2008 11:15 am

Thx pour le post manu. Je conaissait pas du tout Pil
User avatar
TorTukiTu
Site Admin
 
Posts: 1960
Joined: Thu Feb 07, 2008 10:24 pm
Location: Devant son pc durant la redaction de ce message


Return to Python

Who is online

Users browsing this forum: No registered users and 0 guests

cron