[英]Averaging pixels in image ROI
我有以下图像,我想对图像中的每个蒙版区域( 而不是边界框 )应用平均。
如您所见,现在,区域在热图中的内部具有变化的值。 有些像素为淡黄色,有些为紫色。 我希望这不是面具内部的情况。
所以我需要做的是(我猜):
掩码的查找方法如下:
file_names = glob(os.path.join(IMAGE_DIR, "*.jpg"))
masks_prediction = np.zeros((521, 768, len(file_names)))
for i in range(len(file_names)):
print(i)
image = skimage.io.imread(file_names[i])
predictions = model.detect([image], verbose=1)
p = predictions[0]
masks = p['masks']
merged_mask = np.zeros((masks.shape[0], masks.shape[1]))
for j in range(masks.shape[2]):
merged_mask[masks[:,:,j]==True] = True
masks_prediction[:,:,i] = merged_mask
这是应用遮罩的功能:
def apply_mask(image, mask, color, alpha=0.5):
"""Apply the given mask to the image.
"""
for c in range(3):
image[:, :, c] = np.where(mask == 1,
image[:, :, c] *
(1 - alpha) + alpha * color[c] * 255,
image[:, :, c])
return image
在主文件中,使用方法如下:
mask = masks[:, :, i]
if show_mask:
masked_image = apply_mask(masked_image, mask, color)
所以我需要在这里的某个地方进行修改,但我不知道确切在哪里。
我认为您要寻找的面具是由代码提供的:
mask = masks[:, :, i]
我指的是你的口罩数量。
您可以使用openCV函数mean
从原始图像中获取遮罩区域的mean
代码如下所示:
mask = masks[:, :, i]
avg_masked_value = cv2.mean(original_image,mask)
其中original_image是您加载的原始图像,而avg_masked_value将包含3x1平均值数组。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.