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.
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.