这个NumPy列表理解的缩短方式

时间:2015-05-25 11:40:58

标签: python python-2.7 opencv numpy

有没有更简单,更快捷的方法呢?

maxr, maxc = im_out.shape[:2]

for col in range(maxc):
    for row in range(maxr):
        if im_gray[row,col,0] != 255 and im_gray[row,col,1] != 255 and im_gray[row,col,2] != 255:
            im_out[row, col] = im_gray[row, col]

2 个答案:

答案 0 :(得分:2)

根据这一点,应该可以解决这个问题:

# I think it's axis 2, might have to play around there
mask = (im_gray != 255).all(axis=2)
im_out[mask] = im_gray[mask]

答案 1 :(得分:1)

你可以使用面具:

mask = (im_gray[..., 0] != 255) & (im_gray[..., 1] != 255) & (im_gray[..., 2] != 255)

im_out[mask] = im_gray[mask]

上述矢量化找到一个掩码,其中满足所有通道的条件。