我正在尝试获取二进制掩码的非零值(已按一定范围索引,此处的范围由上下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值范围内)
答案 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]]