Вот способ сделать это без использования numpy.pad
import cv2
import numpy as np
tiger = cv2.imread('tiger.jpg')
tigers = np.array((tiger,tiger,tiger,tiger,tiger))
color = np.array((255, 0, 0))
pad = 5
sub = slice(pad,-pad)
Создать массив цвета границы, используя форму оригинала
z,a,b,c = tigers.shape
newshape = (z, pad+a+pad, pad+b+pad, c)
w = np.zeros(newshape,dtype=np.uint8) + color
Затем просто назначьте исходный массив до середины нового массива
w[:,sub,sub,:] = tigers
plt.imshow(w[3])
plt.show()
plt.close()
Используя numpy.pad
- заполнение нулями, затем назначьте цвет четырем ребрам
q = np.pad(tigers,((0,0),(pad,pad),(pad,pad),(0,0)))
q[:,:,:5,:] = color
q[:,:,-5:,:] = color
q[:,:5,:,:] = color
q[:,-5:,:,:] = color
numpy.pad
и назначьте цвет с помощью логической маски
q = np.pad(tigers,((0,0),(pad,pad),(pad,pad),(0,0)))
mask = np.ones(q.shape[:-1],dtype=np.bool8)
mask[:,sub,sub] = False
q[mask] = color