我有一个 3 通道 numpy 数组,即一个图像,我想屏蔽一些区域,然后计算未屏蔽区域的平均值。当我将我的 numpy 数组转换为掩码的 numpy 数组时,我总是收到以下错误:
raise MaskError(msg % (nd, nm))
numpy.ma.core.MaskError: Mask and data not compatible: data size is 325080, mask size is 108360.
我的数组(图像)形状是:(301, 360, 3)
供参考。我通过创建一个重复的零数组来创建我的掩码,然后1
在掩码上绘制一个 's (True) 的多边形形状。
我的代码是:
mask = np.zeros((src.shape[0], src.shape[1], 1), dtype='uint8')
cv2.drawContours(mask, [np.array(poly)], -1, (1,), -1)
msrc = np.ma.array(src, mask=mask, dtype='uint8') # error on this line
mean = np.ma.mean(msrc)
我做错了什么,如何修复它以在 numpy 中成功创建屏蔽数组?