Перевести изображение и скопировать входящие пиксели с помощью Pillow в Python - PullRequest
1 голос
/ 06 августа 2020

Я могу использовать аффинное преобразование, чтобы перевести изображение обычным способом. Чего я не смог понять, так это того, как заставить вновь добавленные пиксели по краям копировать значение края, которое уже было, вместо того, чтобы по умолчанию равняться 0.

Например, Left В случае ниже должны быть желтые пиксели справа от блока, а в случае Up должны быть желтые ниже. Есть ли способ выполнить sh это с помощью аффинного преобразования или другого метода из Pillow?

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

import matplotlib.pyplot as plt
from PIL import Image
import numpy as np

image_size = (10, 10)


def translate(img, x, y):
    """Shift the image right x pixels and up y pixels."""
    return img.transform(img.size, Image.AFFINE, (1, 0, -x, 0, 1, y))

# generate a pattern
data = np.zeros(image_size)
for i, x in enumerate(data):
    for j, y in enumerate(x):
        if i >= image_size[0] / 2 and j >= image_size[1] / 2:
            data[i][j] = 255

im = Image.fromarray(data)
im = im.convert("L")

plt.subplot(321)
plt.title("Base")
plt.imshow(im)

plt.subplot(323)
plt.title("Left")
plt.imshow(translate(im, -1, 0))

plt.subplot(324)
plt.title("Right")
plt.imshow(translate(im, 1, 0))

plt.subplot(325)
plt.title("Up")
plt.imshow(translate(im, 0, 1))

plt.subplot(326)
plt.title("Down")
plt.imshow(translate(im, 0, -1))

plt.tight_layout()
plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...