将零空间添加到图片的数组中

时间:2017-07-07 02:08:37

标签: python arrays numpy scipy

我的图像定义为:

imagen = scipy.misc.imread("C:\\Users\\Reymi\\Downloads\\imagen.png")

它的大小为(1929,1280) 我需要在数组的每一侧添加2个带有零的列和行,这样我就可以使用内核而不必担心它会超出数组。

如何?谢谢

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
相关问题