2017-02-23 76 views
0

所以我試圖從圖像中製作250x250的作物。我將它從每個維度從-125變爲125,因此它出界了。我想每一個設定值超出範圍爲0。目前,我有以下幾點:Python:當作物超出範圍時將值設置爲0

im_cropped = im[-125:125,-125:125]

然而,這個輸出爲負指數不存在錯誤。有沒有辦法產生一個250x250的作物,所有的邊界像素都設置爲0?

+1

'im'的類型是什麼?如果它是一個'numpy'數組,那麼「-125」意味着「來自後面的125個元素」。 – DyZ

回答

0
import numpy as np 
cropSize = 250 
im_cropped = np.zeros_like(im) 
bidx = (np.array(im.shape)-cropSize)/2 
eidx = bidx + cropSize 
cropSlice = np.s_[bidx[0]:eidx[0],bidx[1]:eidx[1]] 
im_cropped[cropSlice] = im[cropSlice] 

我認爲這會做你想要的。它會創建一個全零的數組,然後從原始圖像複製中間的250x250正方形。 np.s_ []技巧會創建一個切片對象,您可以在多個數組中使用切片對象,而無需重新寫入切片。