我有两个名为image和mask的图像,形状如下:
image shape: (876, 1020, 3)
mask shape: (876, 1020)
我要做的是将图像的三个元素中的每一个与掩模非零的掩码分开。所以,我这样做:
import numpy as np
index = np.nonzero(mask)
image[index, :] = image[index, :]/mask[index]
然而,这会导致程序花费很长时间,然后失败;
ValueError:操作数无法与形状一起广播(2,302793,1020,3)(302793,)
答案 0 :(得分:4)
如果您在创建掩码副本时没有内存问题,可以将零元素设置为1并直接划分:
mask2 = mask.copy()
mask2[mask2==0]=1
image /= mask2[...,np.newaxis]