我的图像定义为:
imagen = scipy.misc.imread("C:\\Users\\Reymi\\Downloads\\imagen.png")
它的大小为(1929,1280) 我需要在数组的每一侧添加2个带有零的列和行,这样我就可以使用内核而不必担心它会超出数组。
如何?谢谢
答案 0 :(得分:2)
使用pad
功能:
im_new = scipy.pad(array=imagen, pad_width=[2, 2], mode='constant', constant_values=0)
上述功能使阵列在所有方向上都变大了2。如果你想用0来替换替换外部的两个像素而不使图片变大,我不会认为有一个内置函数,但我会做类似的事情:
pad = 2
im_new = scipy.zeros_like(imagen)
im_new[pad:-pad, pad:-pad] = imagen[pad:-pad, pad:-pad]
这会创建一个0的图像,然后填充imagen
的中间部分。
答案 1 :(得分:0)
选项 - 1 - 使用OpenCV
imagenBorder = cv2.copyMakeBorder(imagen,2,2,2,2,cv2.BORDER_REFLECT)
选项 - 2 - 手动填充到numpy数组
import numpy as np
borderWidth = 2
i = 0
while i < borderWidth:
imagen = np.insert(imagen, 0, 0, axis=1)
imagen = np.insert(imagen, imagen.shape[1], 0, axis=1)
imagen = np.insert(imagen, 0, 0, axis=0)
imagen = np.insert(imagen, imagen.shape[0], 0, axis=0)
i = i+1