Bonjour,
J'aurais besoin d'aide pour faire a partir d'une image, un programme Python permettant de construire une image anaglyptique rouge-cyan.
Bonjour,
J'aurais besoin d'aide pour faire a partir d'une image, un programme Python permettant de construire une image anaglyptique rouge-cyan.
j'ai d�j� fait une image anaglyptique mais a partir de deux images et non une.
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")
par dichotomie ?
(private "joke" - ne cherchez pas)
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.
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
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.
Bon courage!
Code : S�lectionner tout - Visualiser dans une fen�tre � part
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")
Ju
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)Envoy� par jojo5457
Le code n'est manifestement pas complet.
Supposons que im3 � �t� cr�� pr�c�dement, une autre question se pose.
� quoi servent les lignes
Si elles sont l�, peut-�tre sont-elles utiles. Une autre version du code ?
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7 pixel=data[i] rouge=pixel[0] ... pixel2=data2[i] vert=pixel[1] bleu=pixel[2]
Ba non en faite elle serve a rien mais du coup je sais pas comment faire
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.
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.
"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"
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.
Heu, c'est uniquement la largeur qu'il faut doubler.
Si ton image est noire par contre, cela vient d'ici:
c'est le contraire:
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6 for i in range (0,n): pixel=dataRouge[i] dataRouge.append(data3) pixel=dataBleu[i] dataBleu.append(data3)
De toutes mani�res cela ne cr�e aucun d�calage, il n'appara�t pas deux images dans le r�sultat.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2 data3.append(pixel)
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.
Doubler ? doubler quoi ? L'image post�e au post #15 s'affiche mal chez vous ?
Je ne comprend pas o� vous voulez en venir.
Partager