Search code examples
pythonimage-processingpython-imaging-libraryimage-scanner

How to Alter Photographed Document to Look "Scanned"


How can I do this in Python/PIL? I.e., given the four points of an offset rectangle (a photographed document), make it look flat on as if it were scanned. Is there a simple algorithm for it?

Also, are there any other manipulations I should do to make it look more "scan-like"?

I want to make a simple version of this program for myself in Python.


Solution

  • Look at transform() with method set to QUAD

    https://pillow.readthedocs.io/en/stable/reference/Image.html#PIL.Image.Image.transform

    im.transform(size, QUAD, data) => image
    im.transform(size, QUAD, data, filter) => image
    

    Maps a quadrilateral (a region defined by four corners) from the image to a rectangle with the given size.

    Data is an 8-tuple (x0, y0, x1, y1, x2, y2, y3, y3) which contain the upper left, lower left, lower right, and upper right corner of the source quadrilateral.