运行此操作以从值为> 0的某个上部像素开始填充图像底部:
def fillDown(im):
h,w=im.shape
for i in range(w):
for j in range(h):
if im[j][i]>0:
for k in range(j,h):
im[k][i]=255
break
对于大图片,这需要太长时间,你会如何建议优化它?
答案 0 :(得分:3)
我相信以下代码可以满足您的需求:
im = np.array([[0,0,0,0],[0,0,1,1],[0,0,0,1],[0,1,1,1]]) # Example
#array([[0, 0, 0, 0],
# [0, 0, 1, 1],
# [0, 0, 0, 1],
# [0, 1, 1, 1]])
im[im.cumsum(axis=0) > 0] = 255
#array([[ 0, 0, 0, 0],
# [ 0, 0, 255, 255],
# [ 0, 0, 255, 255],
# [ 0, 255, 255, 255]])
希望它比三重嵌套循环更有效。
答案 1 :(得分:-1)
我想用numpy来做这件事。
- Hello - TEST