"Les deux sont exactement la même image mais j'ai une différence."
Mais ils ne le sont pas.
Vous pouvez le voir, en utilisant le code ci-dessous par exemple:
def show_diff(img1, img2):
diff = Image.new("RGB", img1.size, (255,255,255))
for x1 in range(img1.size[0]):
for y1 in range(img1.size[1]):
x2 = img1.size[0] - 1 - x1
y2 = img1.size[1] - 1 - y1
if img1.getpixel((x1,y1)) != img2.getpixel((x2,y2)):
print(x1,y1,x2,y2)
diff.putpixel((x1,y1), (255,0,0))
diff.show()
img_r = Image.open("img/pacman-r.png")
img_l = Image.open("img/pacman-l.png")
show_diff(img_r, img_l)
Quels sont les résultats dans
(Ici, un pixel qui diffère entre les deux images est de couleur rouge.)
Ou avec
def show_delta(img1, img2):
diff = Image.new("RGB", img1.size, (255,255,255))
for x1 in range(img1.size[0]):
for y1 in range(img1.size[1]):
x2 = img1.size[0] - 1 - x1
y2 = img1.size[1] - 1 - y1
p1 = img1.getpixel((x1,y1))
p2 = img2.getpixel((x2,y2))
p3 = round((p1[0]/2) - (p2[0]/2)) + 128
diff.putpixel((x1,y1), (p3,p3,p3))
diff.show()
img_r = Image.open("img/pacman-r.png")
img_l = Image.open("img/pacman-l.png")
show_delta(img_r, img_l)
qui se traduit par
(Ici, des pixels équivalents sont gris tandis qu'un pixel blanc signifie un pixel dans img1 a été créé (foncé), tandis que non durci dans img2 et un pixel noir signifie le contraire.)
Il semble que vous ayez suspecté que la méthode Image.transpose
de PIL ait causé le problème, mais que les images sources ne soient pas juste transposées.
Image.transpose
œuvres que vous attendez - donc quelque chose comme:
def diff(img1, img2):
im1 = img1.load()
im2 = img2.load()
images_match = True
for i in range(0, img1.size[0]):
for j in range(0, img1.size[1]):
if(im1[i,j] != im2[i,j]):
images_match = False
return images_match
img_r = Image.open("img/pacman-r.png")
# NOTE: **NOT** Using img_l here
print(diff(img_r, img_r.transpose(Image.FLIP_LEFT_RIGHT).transpose(Image.FLIP_LEFT_RIGHT)))
retours True
.
(Ici, une image est comparée à une version deux fois transposée d'elle-même)
Attend car ils ne sont pas exactement les mêmes, au moins ceux .png ne semblent pas être alignés en hauteur. Videz-les en tant que flux d'octets ou vérifiez-les avec une boîte à outils d'image. – yacc
Merci, il semblait même à l'œil nu, mais en fait, il semble y avoir une différence. –