La dechiqueteuse

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