2017-07-07 52 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