获取特定范围内的非零二进制掩码的坐标

时间:2019-10-10 08:40:51

标签: python numpy

我正在尝试获取二进制掩码的非零值(已按一定范围索引,此处的范围由上下x,y值定义)

起初,我是这样做的

region = np.transpose(np.nonzero(mask_belt[lower_Y[i]:upper_Y[i],lower_X[i]:upper_X[i]]))

但是后来我意识到区域坐标给了我根据范围裁剪的蒙版的坐标,因此我必须在以后执行。

region[:,1] = region[:,1]+lower_X[i]
region[:,0] = region[:,0] + lower_Y[i]

但是我觉得这容易出错。有没有一种更干净的方法来获取二进制掩码的非零值(不在整个掩码上,而是在一定的X和Y值范围内)

1 个答案:

答案 0 :(得分:1)

我们可以一步完成这些求和,也可以引入np.argwhere以在第一步获得这些索引。因此,一种方法是-

region = np.argwhere(mask_belt[lower_Y[i]:upper_Y[i],lower_X[i]:upper_X[i]]) 
region += [lower_Y[i],lower_X[i]]