优化这个python代码

时间:2017-04-21 02:09:03

标签: python opencv image-processing optimization

运行此操作以从值为> 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

对于大图片,这需要太长时间,你会如何建议优化它?

2 个答案:

答案 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