2

3 チャンネルの numpy 配列、つまり画像があり、一部の領域をマスクしてから、マスクされていない領域の平均を計算したいと考えています。numpy 配列をマスクされた numpy 配列に変換しようとすると、常に次のエラーが発生します。

raise MaskError(msg % (nd, nm))
numpy.ma.core.MaskError: マスクとデータに互換性がありません: データ サイズは 325080、マスク サイズは 108360 です。

私の配列(画像)の形状は次のとおり(301, 360, 3)です。参考までに。1ゼロの複製配列を作成してマスクを作成し、マスクに(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でマスクされた配列を正常に作成するにはどうすればよいですか?

4

1 に答える 1