2016-10-07 2 views
1

Использование Python PIL Я хочу преобразовать входные изображения таким образом, чтобы они выглядели в перспективе. Большинство ответов, которые я нашел, касаются вращения и т. Д. На приведенных ниже снимках показан один из эффектов, на которые я нацелен. Точно так же я хотел бы сделать это не только спереди назад, но и слева направо и наоборот. Еще один эффект, который я хотел бы сделать, - деформировать изображение таким образом, чтобы центр был ближе, а края были более отдаленными.Python PIL image warping/Аффинные преобразования

Как мне позвонить im.transform, чтобы получить этот эффект? И почему?

входного изображения:

Input Image

Выход Эффект:

Ouput Image

ответ

3

Я считаю, что вы ищете perspective transformations. Вы можете сделать это с подушкой следующим образом:

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

Где a0-А7 коэффициенты используются для преобразования таким образом (из источников, Geometry.c):

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

Интересно. Но какие значения необходимы для эффекта выше? – Simon

+0

Или лучше, как перевести 3D-проекции на этот 2D-вход – Simon

Смежные вопросы