Python PIL图像变形/仿射变换

时间:2016-10-07 05:42:55

标签: python python-imaging-library

使用Python PIL我希望以一种看似透视的方式转换输入图像。我发现的大部分答案都是关于旋转等。下面的图片显示了我的目标之一。同样地,我不仅要从前到后,还要从左到右,反之亦然。我想要的另一个效果是以中心更近,边缘更远的方式扭曲图像。

如何调用im.transform来获得此效果?为什么?

输入图片:

Input Image

输出效果:

Ouput Image

1 个答案:

答案 0 :(得分:4)

我相信你正在寻找perspective transformations。您可以通过以下方式使用Pillow:

transformed = image.transform(
    image.size, Image.PERSPECTIVE,
    [
        a0, a1, a2, 
        a3, a4, a5,
        a6, a7
    ],
    Image.BILINEAR
)

其中a0-a7是以这种方式用于转换的系数(来自Geometry.c):

xout = (a0 * xin + a1 * yin + a2) / (a6 * xin + a7 * yin + 1);
yout = (a3 * xin + a4 * yin + a5) / (a6 * xin + a7 * yin + 1);