И еще один вариант с использованием np.pad:
Как вы можете видеть здесь , вам нужно указать ось, которую вы хотите np.pad. Просто используя:
imgArray = np.pad(imgArray, pad_width=1, mode='constant', constant_values=0)
добавляет только значения к третьей оси (т. Е. Канал RGB), чтобы вы больше не могли рисовать изображение.
Как описано в указанном вопросе, вам потребуется использовать следующие аргументы кода:
imgArray = np.pad(imgArray, pad_width=((1,1), (1,1), (0,0)), mode='constant', constant_values=0)
Также см. Документацию np.pad :
Количество значений, добавленных к краям каждой оси. ((before_1, after_1),… (before_N, after_N)) уникальная ширина площадки для каждой оси. ((до, после),) дает одинаковые до и после площадки для каждой оси. (pad,) или int - это сокращение для before = after = ширина площадки для всех осей.
Это означает, что первый элемент кортежа дополняет первую ось (в случае изображения верхнюю и нижнюю границу), а второй элемент кортежа дополняет вторую ось (левую и правую границу) с одним «0».
Вы не хотите дополнять последнее измерение, так как это измерение, хранящее информацию RGB.
И как вы указали в своем вопросе, что вы хотите белую рамку: constant_values должен быть установлен в 255 или 1, в зависимости от диапазона вашего изображения. Использование 0 приводит к черной рамке.