Искажение картинок с помощью Python

Как можно сделать content aware scale (сжимает и разжимает фотографию с учетом содержимого) в питоне, которая будет искажать первую картинку и получать вторую на выходе? введите сюда описание изображения введите сюда описание изображения

Нашел сайт, который может делать подобное.


Ответы (1 шт):

Автор решения: CrazyElf

Ну вот вам примерно ваш кот, хотя я его исказил только по горизонтали, а нужно ещё видимо по вертикали, но тут я вам даю пример как с этим работать, дальше вы сами думайте. Код я запускал в Google Colab.

import numpy as np
import PIL
import requests

im=PIL.Image.open(requests.get('https://i.stack.imgur.com/p5QiV.jpg', stream=True).raw)
a = np.asarray(im)
b = np.zeros_like(a)
xs = a.shape[1] // 3
for x in range(xs//2):
    b[:,x] = a[:,x * 2]
for x in range(xs*2):
    b[:,xs//2 + x] = a[:,xs + x//2]
for x in range(xs//2):
    b[:,xs//2+xs*2 + x] = a[:,xs * 2 + x * 2]
imb = PIL.Image.fromarray(b)
imb

введите сюда описание изображения

→ Ссылка