You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python叠加Mask RCNN生成的多幅图像目标掩码?

掩码叠加实现方法

二值掩码合并(多实例掩码合并为一个)

如果你的掩码是二值形式(仅区分目标区域和背景,值为0或1),可以用以下两种方法快速合并:

方法1:NumPy逻辑或运算

通过对多个掩码执行逻辑或操作,保留所有目标区域:

import numpy as np

# 示例:3个形状为(H, W)的二值掩码
mask1 = np.random.randint(0, 2, (512, 512))
mask2 = np.random.randint(0, 2, (512, 512))
mask3 = np.random.randint(0, 2, (512, 512))

# 合并所有掩码
combined_mask = np.logical_or.reduce([mask1, mask2, mask3]).astype(np.uint8)

方法2:求和转二值

将多个掩码求和后,把大于0的区域设为1,同样能得到合并后的掩码:

import numpy as np

# 示例掩码
mask1 = np.random.randint(0, 2, (512, 512))
mask2 = np.random.randint(0, 2, (512, 512))

combined_mask = (mask1 + mask2) > 0
combined_mask = combined_mask.astype(np.uint8)

如果是Mask RCNN输出的masks张量(形状为[实例数, 高度, 宽度]),可以直接用np.any(masks, axis=0)快速合并所有实例的掩码。

多类别彩色掩码叠加

如果需要区分不同目标/类别的掩码,可以给每个掩码分配不同颜色,生成彩色叠加掩码:

import numpy as np
import cv2

# 示例:3个不同类别的二值掩码
class1_mask = np.random.randint(0, 2, (512, 512))
class2_mask = np.random.randint(0, 2, (512, 512))
class3_mask = np.random.randint(0, 2, (512, 512))

# 创建空白彩色画布
color_overlay = np.zeros((512, 512, 3), dtype=np.uint8)

# 给每个类别掩码分配专属颜色
color_overlay[class1_mask == 1] = [255, 0, 0]   # 红色
color_overlay[class2_mask == 1] = [0, 255, 0]   # 绿色
color_overlay[class3_mask == 1] = [0, 0, 255]   # 蓝色

# 若需叠加到原图(可选)
# original_img = cv2.imread("你的原图路径.jpg")
# final_img = cv2.addWeighted(original_img, 0.7, color_overlay, 0.3, 0)

内容的提问来源于stack exchange,提问作者lucas diniz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 07:03:35