У меня есть 3-х канальный массив, то есть изображение, и я хочу замаскировать некоторые области, а затем вычислить среднее значение для немаскированных областей. Когда я иду, чтобы преобразовать мой массив NumPy в массив NUMPI в маске, я всегда получаю следующую ошибку:
повышение 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?