Précédent   Forum du club des développeurs et IT Pro > Autres langages > Python & Zope
Python & Zope Forum d'entraide sur la programmation en Python et Zope. Avant de poster -> F.A.Q Python
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 12/12/2012, 18h00   #1
jojo5457
Invité de passage
 
Femme JOJO
Lycéen
Inscription : novembre 2012
Messages : 9
Détails du profil
Informations personnelles :
Nom : Femme JOJO
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Lycéen

Informations forums :
Inscription : novembre 2012
Messages : 9
Points : 0
Points : 0
Par défaut Faire une Image anaglyptique

Bonjour,
J'aurais besoin d'aide pour faire a partir d'une image, un programme Python permettant de construire une image anaglyptique rouge-cyan.
jojo5457 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2012, 18h02   #2
jojo5457
Invité de passage
 
Femme JOJO
Lycéen
Inscription : novembre 2012
Messages : 9
Détails du profil
Informations personnelles :
Nom : Femme JOJO
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Lycéen

Informations forums :
Inscription : novembre 2012
Messages : 9
Points : 0
Points : 0
j'ai déjà fait une image anaglyptique mais a partir de deux images et non une.
jojo5457 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2012, 18h18   #3
jojo5457
Invité de passage
 
Femme JOJO
Lycéen
Inscription : novembre 2012
Messages : 9
Détails du profil
Informations personnelles :
Nom : Femme JOJO
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Lycéen

Informations forums :
Inscription : novembre 2012
Messages : 9
Points : 0
Points : 0
from PIL import Image
im=Image.open("Image.jpg")
im2=Image.open("Imagedecale.jpg")
taille=im.size
nbPixel=taille[0]*taille[1]
data=list(im.getdata())
data2=list(im2.getdata())
data3=list()
for i in range(0,nbPixel):
pixel=data[i]
rouge=pixel[0]
data3.append(data[i])
pixel2=data2[i]
vert=pixel[1]
bleu=pixel[2]
data3.append(data2[i])

im3.putdata(data3)
im3.save("iamge3D.jpg")
jojo5457 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2012, 12h40   #4
plxpy
Membre émérite
 
Avatar de plxpy
 
Homme
Ingénieur
Inscription : janvier 2009
Messages : 505
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : janvier 2009
Messages : 505
Points : 917
Points : 917
par dichotomie ?

(private "joke" - ne cherchez pas)
plxpy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2012, 12h57   #5
jojo5457
Invité de passage
 
Femme JOJO
Lycéen
Inscription : novembre 2012
Messages : 9
Détails du profil
Informations personnelles :
Nom : Femme JOJO
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Lycéen

Informations forums :
Inscription : novembre 2012
Messages : 9
Points : 0
Points : 0
Il faut que je fasse par dichotomie ?
jojo5457 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2012, 13h07   #6
plxpy
Membre émérite
 
Avatar de plxpy
 
Homme
Ingénieur
Inscription : janvier 2009
Messages : 505
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : janvier 2009
Messages : 505
Points : 917
Points : 917
Non, c'était du second degré pour te rappeler une discussion où une autre intervenant et moi avions passé pas mal de temps à débrouiller ton problème de dichotomie sans que tu daignes te manisfester et répondre à nos questions, bref, une attitude purement consommatrice sur un forum plutôt communautaire où les gens prennent sur leur temps pour aider les autres.
plxpy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2012, 13h25   #7
jojo5457
Invité de passage
 
Femme JOJO
Lycéen
Inscription : novembre 2012
Messages : 9
Détails du profil
Informations personnelles :
Nom : Femme JOJO
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Lycéen

Informations forums :
Inscription : novembre 2012
Messages : 9
Points : 0
Points : 0
J'en suis vraiment désoler mais je ne suis pas très souvent sur l'ordinateur car je n'y est pas toujours accès mais j'ai lue vos messages qui mon aider pour mon problème
jojo5457 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2012, 13h37   #8
Julien N
Membre du Club
 
Homme julien N
Ingénieur
Inscription : août 2010
Messages : 64
Détails du profil
Informations personnelles :
Nom : Homme julien N
Localisation : France

Informations professionnelles :
Activité : Ingénieur
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : août 2010
Messages : 64
Points : 56
Points : 56
Salut!

Peut-être pourrait-t-on commencer par ce sur quoi tu butte. Une petite explication sur le principe de la construction d'une image anaglyptique ne serait pas superflue je pense.

Ensuite une mise en forme du code à l'aide des balises est fortement recommendée (obligatoire devrais-je dire), ne serait-ce que pour l'indentation.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
from PIL import Image
 
im=Image.open("Image.jpg")
im2=Image.open("Imagedecale.jpg")
 
taille=im.size
nbPixel=taille[0]*taille[1]
data=list(im.getdata())
data2=list(im2.getdata())
data3=list()
 
for i in range(0,nbPixel):
     pixel=data[i]
     rouge=pixel[0]
     data3.append(data[i])
     pixel2=data2[i]
     vert=pixel[1]
     bleu=pixel[2]
     data3.append(data2[i])
 
im3.putdata(data3)
im3.save("iamge3D.jpg")
Bon courage!


Ju
Julien N est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2012, 11h21   #9
jojo5457
Invité de passage
 
Femme JOJO
Lycéen
Inscription : novembre 2012
Messages : 9
Détails du profil
Informations personnelles :
Nom : Femme JOJO
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Lycéen

Informations forums :
Inscription : novembre 2012
Messages : 9
Points : 0
Points : 0
Quand je fait exécuter le programme j'obtient une image toute noir
jojo5457 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2012, 14h17   #10
plxpy
Membre émérite
 
Avatar de plxpy
 
Homme
Ingénieur
Inscription : janvier 2009
Messages : 505
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : janvier 2009
Messages : 505
Points : 917
Points : 917
Citation:
Envoyé par jojo5457
Quand je fait exécuter le programme j'obtient une image toute noir
C'est tout bonnement impossible : la ligne 21 lève, à tous les coups, une exception NameError et empêche de sauvegarder quoi que ce soit (image toute noire ou pas)
plxpy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2012, 14h57   #11
VinsS
Membre Expert
 
Homme
Inscription : octobre 2008
Messages : 972
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Belgique

Informations forums :
Inscription : octobre 2008
Messages : 972
Points : 1 454
Points : 1 454
Citation:
Envoyé par plxpy Voir le message
C'est tout bonnement impossible : la ligne 21 lève, à tous les coups, une exception NameError et empêche de sauvegarder quoi que ce soit (image toute noire ou pas)
Le code n'est manifestement pas complet.

Supposons que im3 à été créé précédement, une autre question se pose.
À quoi servent les lignes
Code :
1
2
3
4
5
6
7
 
     pixel=data[i]
     rouge=pixel[0]
     ...
     pixel2=data2[i]
     vert=pixel[1]
     bleu=pixel[2]
Si elles sont là, peut-être sont-elles utiles. Une autre version du code ?
__________________
Vincent
Oqapy . Qarte . PaQager
VinsS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2012, 20h27   #12
jojo5457
Invité de passage
 
Femme JOJO
Lycéen
Inscription : novembre 2012
Messages : 9
Détails du profil
Informations personnelles :
Nom : Femme JOJO
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Lycéen

Informations forums :
Inscription : novembre 2012
Messages : 9
Points : 0
Points : 0
Ba non en faite elle serve a rien mais du coup je sais pas comment faire
jojo5457 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2012, 22h08   #13
Tixium
Invité régulier
 
Homme
Étudiant
Inscription : décembre 2012
Messages : 5
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Étudiant
Secteur : Bâtiment Travaux Publics

Informations forums :
Inscription : décembre 2012
Messages : 5
Points : 6
Points : 6
Bonsoir,
J'ai également un projet d'image anaglyphe cependant je dois le faire en créant une image cyan et une autre rouge et assembler les deux pour obtenir mon image 3D.
J'ai réussi à créer les images cyan et rouge cependant je n'arrive absolument pas à créer mon image 3D.

Voici mon code :

import Image
imD= Image.open("D.jpg") #ouvrir D.jpg
imG= Image.open("G.jpg") #ouvrir G.jpg


taille = imD.size #calcul taille
l=taille[0]
h=taille[1]
t=l*h

dataD=list(imD.getdata())
dataG=list(imG.getdata())

imrouge=Image.new('RGB',taille)
datarouge=list()
imbleu=Image.new('RGB',taille)
datableu=list()

for i in range (0,t):
pixel=dataD[i]
Rd= pixel[0]
Vd= pixel[1]
Bd= pixel[2]
datarouge.append((Rd,0,0))
pixel=dataG[i]
Rg= pixel[0]
Vg= pixel[1]
Bg= pixel[2]
datableu.append((0,Vg,Bg))

imrouge.putdata(datarouge)
imrouge.save('imagerouge.jpg')
imbleu.putdata(datableu)
imbleu.save('imagebleu.jpg')


im3D=Image.new('RGB',taille)
imRouge=Image.open("imagerouge.jpg")
imBleu=Image.open("imagebleu.jpg")

dataRouge=list(imRouge.getdata())
dataBleu=list(imBleu.getdata())

data3=list()

for i in range (0,t):
pixel=dataRouge[i]
Rd= pixel[0]
Vd= pixel[1]
Bd= pixel[2]
data3.append((Rd,0,0))
pixel=dataBleu[i]
Rg= pixel[0]
Vg= pixel[1]
Bg= pixel[2]
data3.append((0,Vg,Bg))

im3D.putdata(data3)
im3D.save('image3D.jpg')

Je vous remercie par avance pour votre aide.
Cordialement,
Tixium.
Tixium est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2012, 10h17   #14
VinsS
Membre Expert
 
Homme
Inscription : octobre 2008
Messages : 972
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Belgique

Informations forums :
Inscription : octobre 2008
Messages : 972
Points : 1 454
Points : 1 454
Ouais, il me semblait bien de la décomposition des pixels était utile à quelque chose.

D'après le code de Tixium, une image anaglyptique se construirait comme ceci:

Image droite: [RD,VB,BD][RD,VB,BD][RD,VB,BD][RD,VB,BD][....
Image gauche: [RG,VG,BG][RG,VG,BG][RG,VG,BG][RG,VG,BG][....

Image résultante: [RD,0,0][0,VG,BG][RD,0,0][0,VG,BG][RD,0,0][0,VG,BG][...

Mais tous les pixels de chaque image sont utilisés donc la taille de l'image résultante doit être doublée.

Est-ce ainsi que se construit un anaglyphe ? Les pixels de l'image 'droite' originale sont placés à gauche dans l'image finale ? Faut-il deux images au départ ?


Si oui, alors, après correction de la taille, le code de Tixium devrait donner le résultat attendu.

Et si ça ne marche toujours pas, faudra donner le détail de ce qui ne va pas.
__________________
Vincent
Oqapy . Qarte . PaQager
VinsS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2012, 13h05   #15
plxpy
Membre émérite
 
Avatar de plxpy
 
Homme
Ingénieur
Inscription : janvier 2009
Messages : 505
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : janvier 2009
Messages : 505
Points : 917
Points : 917
"un dessin (ici, une image) vaut mieux qu'un long discours"



tiré(e) de ce site

un autre proverbe "sauce chinoise" (qui n'existe certainement pas) :

"Quand on ne sait pas où on va, on a peu de chance d'y arriver"
plxpy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2012, 18h30   #16
Tixium
Invité régulier
 
Homme
Étudiant
Inscription : décembre 2012
Messages : 5
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Étudiant
Secteur : Bâtiment Travaux Publics

Informations forums :
Inscription : décembre 2012
Messages : 5
Points : 6
Points : 6
Bonjour,
Merci pour vos réponses. J'ai donc changé la taille en la doublant et modifié le code. Le code s'éxécute correctement mais l'image finale est noire. Une idée ?


import Image
imD= Image.open("D.jpg") #ouvrir D.jpg
imG= Image.open("G.jpg") #ouvrir G.jpg


taille = imD.size #calcul taille
l=taille[0]
h=taille[1]
t=l*h

dataD=list(imD.getdata())
dataG=list(imG.getdata())

imrouge=Image.new('RGB',taille)
datarouge=list()
imbleu=Image.new('RGB',taille)
datableu=list()

for i in range (0,t):
pixel=dataD[i]
Rd= pixel[0]
Vd= pixel[1]
Bd= pixel[2]
datarouge.append((Rd,0,0))
pixel=dataG[i]
Rg= pixel[0]
Vg= pixel[1]
Bg= pixel[2]
datableu.append((0,Vg,Bg))

imrouge.putdata(datarouge)
imrouge.save('imagerouge.jpg')
imbleu.putdata(datableu)
imbleu.save('imagebleu.jpg')


im3D=Image.new('RGB',taille)
imRouge=Image.open("imagerouge.jpg")
imBleu=Image.open("imagebleu.jpg")

dataRouge=list(imRouge.getdata())
dataBleu=list(imBleu.getdata())
data3=list()
n=2*t


for i in range (0,n):
pixel=dataRouge[i]
dataRouge.append(data3)
pixel=dataBleu[i]
dataBleu.append(data3)



im3D.putdata(data3)
im3D.save('image3D.jpg')

Cordialement.
Tixium est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2012, 18h51   #17
VinsS
Membre Expert
 
Homme
Inscription : octobre 2008
Messages : 972
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Belgique

Informations forums :
Inscription : octobre 2008
Messages : 972
Points : 1 454
Points : 1 454
Heu, c'est uniquement la largeur qu'il faut doubler.

Si ton image est noire par contre, cela vient d'ici:
Code :
1
2
3
4
5
6
 
for i in range (0,n):
    pixel=dataRouge[i]
    dataRouge.append(data3)
    pixel=dataBleu[i]
    dataBleu.append(data3)
c'est le contraire:
Code :
1
2
 
    data3.append(pixel)
De toutes manières cela ne crée aucun décalage, il n'apparaît pas deux images dans le résultat.
__________________
Vincent
Oqapy . Qarte . PaQager
VinsS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2012, 18h59   #18
Tixium
Invité régulier
 
Homme
Étudiant
Inscription : décembre 2012
Messages : 5
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Étudiant
Secteur : Bâtiment Travaux Publics

Informations forums :
Inscription : décembre 2012
Messages : 5
Points : 6
Points : 6
Merci de ta réponse. Cependant j'ai encore un problème :p

J'ai donc mit ceci :
for i in range (0,n):
pixelrouge=dataRouge[i]
data3.append(pixelrouge)
pixelbleu=dataBleu[i]
data3.append(pixelbleu)
Cependant, lorsque que j'éxécute, le messaged'erreur est le suivant :
line 48 pixelrouge=dataRouge[i]
Indexerror: list index out of range.
Une petite idée ? je sais que je suis ps loin du but mais je vois absolument pas comment terminer ce programme :/.
Merci d'avance.
Tixium est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2012, 20h01   #19
plxpy
Membre émérite
 
Avatar de plxpy
 
Homme
Ingénieur
Inscription : janvier 2009
Messages : 505
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : janvier 2009
Messages : 505
Points : 917
Points : 917
Doubler ? doubler quoi ? L'image postée au post #15 s'affiche mal chez vous ?
plxpy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2012, 20h06   #20
Tixium
Invité régulier
 
Homme
Étudiant
Inscription : décembre 2012
Messages : 5
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Étudiant
Secteur : Bâtiment Travaux Publics

Informations forums :
Inscription : décembre 2012
Messages : 5
Points : 6
Points : 6
Je ne comprend pas où vous voulez en venir.
Tixium est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 07h09.


 
 
 
 
Partenaires

Hébergement Web