def mask_on_rgb_image(mask, img, num_class=3): h, w = img.shape[:2] img_show = np.zeros((h, w, 3)) if len(img.shape) == 3: img_show = img else: img = np.expand_dims(img, axis=2) img_show = np.concatenate((img, img, img), axis=-1) # specify color 1:red 2:green 3:blue img_show[np.where(mask == 1)] = [255, 0, 0] img_show[np.where(mask == 2)] = [0, 255, 0] img_show[np.where(mask == 3)] = [0, 0, 255] return img_show
时间: 2023-12-24 14:03:15 浏览: 244
这是一个 Python 函数,用于在彩色图像上根据给定的掩码(mask)展示不同的区域。具体实现方法如下:
- `mask_on_rgb_image(mask, img, num_class=3)`:函数名称,输入参数包括掩码 mask、彩色图像 img 和分类数 num_class,其中 num_class 默认为3。
- `h, w = img.shape[:2]`:获取图像的高度和宽度。
- `img_show = np.zeros((h, w, 3))`:创建一个与 img 大小相同的全0数组,用于展示掩码效果。
- `if len(img.shape) == 3: img_show = img`:如果 img 是彩色图像,直接将 img 赋值给 img_show,否则需要将 img 转换为彩色图像。
- `else: img = np.expand_dims(img, axis=2) img_show = np.concatenate((img, img, img), axis=-1)`:如果 img 是灰度图像,需要将其转换为彩色图像,具体方法是先在第3个维度上扩展为3维,然后将三个维度上的值连接起来。
- `img_show[np.where(mask == 1)] = [255, 0, 0]`:将掩码中等于1的区域赋值为红色,对应的 RGB 值为 [255, 0, 0]。
- `img_show[np.where(mask == 2)] = [0, 255, 0]`:将掩码中等于2的区域赋值为绿色,对应的 RGB 值为 [0, 255, 0]。
- `img_show[np.where(mask == 3)] = [0, 0, 255]`:将掩码中等于3的区域赋值为蓝色,对应的 RGB 值为 [0, 0, 255]。
- `return img_show`:返回展示掩码效果后的彩色图像。
这个函数通常用于图像分割任务中,通过将不同类别的区域用不同颜色标注出来,可以直观地观察模型的分割效果。
阅读全文