我有一个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
(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中成功创建屏蔽数组?你知道吗
正如评论中所说,numpy不考虑图像,它只是数学。OpenCV将数学抽象为简单的图像处理。
要使用OpenCV遮罩图像,可以使用
masked_img = cv2.bitwise_and(src,src,mask=mask)
.(docs)
相关问题 更多 >
编程相关推荐