Как Zero Pad RGB Изображение? - PullRequest
1 голос
/ 17 апреля 2020

Я хочу дополнить изображение RGB размером от 500x500x3 до 512x512x3. Я понимаю, что мне нужно добавить 6 пикселей на каждой границе, но я не могу понять, как. Я прочитал документацию по numpy .pad, но не смог понять, как ее использовать. Фрагменты кода приветствуются.

Ответы [ 2 ]

2 голосов
/ 17 апреля 2020

Мы можем попытаться найти решение, добавив отступы границ, но это будет немного сложнее. Я хотел бы предложить вам альтернативный подход. Сначала мы можем создать холст размером 512x512, а затем мы поместим ваше оригинальное изображение внутри этого холста. Вы можете получить помощь из следующего кода:

import numpy as np

# Create a larger black colored canvas
canvas = np.zeros(512, 512, 3)

canvas[6:506, 6:506] = your_500_500_img

Очевидно, что вы можете преобразовать 6 и 506 в более обобщенную переменную и использовать ее как padding, 512-padding, et c. но этот код иллюстрирует концепцию.

1 голос
/ 17 апреля 2020

Если вам нужно заполнить 0:

RGB = np.pad(RGB, pad_width=[(6, 6),(6, 6),(0, 0)], mode='constant')

Используйте аргумент constant_values для заполнения различных значений (по умолчанию 0):

RGB = np.pad(RGB, pad_width=[(6, 6),(6, 6),(0, 0)], mode='constant', constant_values=0, constant_values=[(3,3),(5,5),(0,0)]))
...