5

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.

skaffman
  • 398,947
  • 96
  • 818
  • 769
Greg
  • 45,306
  • 89
  • 231
  • 297

1 Answers1

8

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.

Lou Franco
  • 87,846
  • 14
  • 132
  • 192