Un document papier a été soumis à une déchiqueteuse.
Voici ce que l’on a pu en récupérer :
A vous d’écrire un programme python permettant de reconstituer le document initial.
from PIL import Image # on importe la classe Image et ses méthodes de la
# bibliothèque Pillow alias PIL
images=[]
for i in range(10):
# Chargement d'une image avec PIL
image = Image.open("shred-complainte-"+str(i)+".png")
images.append(image)
def taille(img):
return img.size # méthode propre à la classe Image
def lire_pixel(img,x,y):
return img.getpixel((x,y)) # méthode propre à la classe Image
def changer_pixel(img,x,y,couleur):
image=img
image.putpixel((x,y),couleur) # méthode propre à la classe Image
return image
def afficher(img):
img.show()
def bord_gauche_blanc(image):
hauteur= taille(image)[1]
for y in range(hauteur):
if lire_pixel(image,0,y)<5:
return False
return True
def recherche_bandelette_gauche(images):
for image in images:
if bord_gauche_blanc(image):
afficher(image)
return image
return None
def score_bandelettes_collage(image1,image2):
score=0
largeur1=taille(image1)[0]
hauteur=taille(image1)[1]
for y in range(hauteur):
if lire_pixel(image1,largeur1-1,y)==lire_pixel(image2,0,y):
score+=1
return score
def recherche_bandellette_droite(image,images):
maxi=0
for img in images:
if image!=img:
if score_bandelettes_collage(image,img)>maxi:
maxi=score_bandelettes_collage(image,img)
banded=img
print(maxi)
afficher(banded)
return banded
def fusion(image1,image2):
largeur1=taille(image1)[0]
largeur2=taille(image1)[0]
hauteur=taille(image1)[1]
image=Image.new('L',(largeur1+largeur2,hauteur))
for x in range(largeur1):
for y in range(hauteur):
changer_pixel(image,x,y,lire_pixel(image1,x,y))
for x in range(largeur2):
for y in range(hauteur):
changer_pixel(image,x+largeur1-1,y,lire_pixel(image2,x,y))
afficher(image)
return image