我有一个3D彩色图像im(形状512 512 3)和一个2D阵列掩模(512 512)。我想通过掩码注释这个彩色图像:
im = im[mask>threshold] + im[mask<threshold] * 0.2 + (255,0,0) * [mask<threshold].
如何有效地在Python中编写?
答案 0 :(得分:2)
这有效:
mask3 = numpy.dstack(mask,mask,mask)
im = im * (mask3>threshold) + im * (mask3<threshold) * 0.2
im[:,:,0] += 255 * (mask<threshold)
它依赖于以下事实:true的数值为1,false为0。
它可能不是最清晰或最有效的,但它仍然可能比通过布尔数组索引快得多,例如im[ mask3 < threshold ] *= 0.2
(除非索引具有非常少量的真值,无论如何)。