2017-07-07 21 views
0

我已图像定义为:添加零空间到图像的阵列

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

它的大小为(1929,1280) 我需要用零添加2列和行的每个侧的数组,所以我可以使用内核而不用担心它会超出数组范围。

怎么样?谢谢

回答

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

或者,如果使用numpy的,'np.pad(imagen画质,((0,0 ,(2,2),'constant')' –

+0

它要求一个“模式”的参数。什么是sp?scipy? – angelustt

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