Python:当作物超出范围时将值设置为0

时间:2017-02-23 01:51:05

标签: python image numpy crop

所以我试图从图像中制作250x250的裁剪。我正在为每个维度从-125到125裁剪它,因此,它超出了界限。我想将每个超出界限的值设置为0.目前,我有以下内容:

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

但是,由于不存在负指数,因此会输出错误。有没有办法生成250x250裁剪,所有越界像素设置为0?

1 个答案:

答案 0 :(得分: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_ []技巧创建了一个切片对象,您可以将其与多个数组一起使用,而无需重写切片。