|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() JOJO Lycéen Inscription : novembre 2012 Messages : 9 ![]() |
Bonjour,
J'aurais besoin d'aide pour faire a partir d'une image, un programme Python permettant de construire une image anaglyptique rouge-cyan. |
|
|
00
|
|
|
#2 |
|
Invité de passage
![]() JOJO Lycéen Inscription : novembre 2012 Messages : 9 ![]() |
j'ai déjà fait une image anaglyptique mais a partir de deux images et non une.
|
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() JOJO Lycéen Inscription : novembre 2012 Messages : 9 ![]() |
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") |
|
|
00
|
|
|
#4 |
|
Membre émérite
![]() Ingénieur Inscription : janvier 2009 Messages : 505 ![]() |
par dichotomie ?
(private "joke" - ne cherchez pas) |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() JOJO Lycéen Inscription : novembre 2012 Messages : 9 ![]() |
Il faut que je fasse par dichotomie ?
|
|
|
00
|
|
|
#6 |
|
Membre émérite
![]() Ingénieur Inscription : janvier 2009 Messages : 505 ![]() |
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.
|
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() JOJO Lycéen Inscription : novembre 2012 Messages : 9 ![]() |
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
|
|
|
00
|
|
|
#8 | ||
|
Membre du Club
![]() julien NIngénieur Inscription : août 2010 Messages : 64 ![]() |
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 :
Ju |
||
|
|
00
|
|
|
#9 |
|
Invité de passage
![]() JOJO Lycéen Inscription : novembre 2012 Messages : 9 ![]() |
Quand je fait exécuter le programme j'obtient une image toute noir
|
|
|
00
|
|
|
#10 | |
|
Membre émérite
![]() Ingénieur Inscription : janvier 2009 Messages : 505 ![]() |
Citation:
|
|
|
|
00
|
|
|
#11 | |||
|
Membre Expert
![]() ![]() Inscription : octobre 2008 Messages : 972 ![]() |
Citation:
Supposons que im3 à été créé précédement, une autre question se pose. À quoi servent les lignes Code :
|
|||
|
|
00
|
|
|
#12 |
|
Invité de passage
![]() JOJO Lycéen Inscription : novembre 2012 Messages : 9 ![]() |
Ba non en faite elle serve a rien mais du coup je sais pas comment faire
|
|
|
00
|
|
|
#13 |
|
Invité régulier
![]() Étudiant Inscription : décembre 2012 Messages : 5 ![]() |
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. |
|
|
00
|
|
|
#14 |
|
Membre Expert
![]() ![]() Inscription : octobre 2008 Messages : 972 ![]() |
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. |
|
|
00
|
|
|
#15 |
|
Membre émérite
![]() Ingénieur Inscription : janvier 2009 Messages : 505 ![]() |
"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" |
|
|
00
|
|
|
#16 |
|
Invité régulier
![]() Étudiant Inscription : décembre 2012 Messages : 5 ![]() |
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. |
|
|
00
|
|
|
#17 | ||
|
Membre Expert
![]() ![]() Inscription : octobre 2008 Messages : 972 ![]() |
Heu, c'est uniquement la largeur qu'il faut doubler.
Si ton image est noire par contre, cela vient d'ici: Code :
De toutes manières cela ne crée aucun décalage, il n'apparaît pas deux images dans le résultat. |
||
|
|
00
|
|
|
#18 |
|
Invité régulier
![]() Étudiant Inscription : décembre 2012 Messages : 5 ![]() |
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. |
|
|
00
|
|
|
#19 |
|
Membre émérite
![]() Ingénieur Inscription : janvier 2009 Messages : 505 ![]() |
Doubler ? doubler quoi ? L'image postée au post #15 s'affiche mal chez vous ?
|
|
|
00
|
|
|
#20 |
|
Invité régulier
![]() Étudiant Inscription : décembre 2012 Messages : 5 ![]() |
Je ne comprend pas où vous voulez en venir.
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com