[英]Cropping image from a binary mask
我正在尝试使用 DeepLab v3 来检测 object 并掩盖实际 object 所在的位置。 DeepLab model 产生一个resized_im
(3D) 和一个 0 和非零值的掩码seg_map
(2D),0 表示它是背景。
目前,只能在 object 上使用覆盖蒙版 plot 图像。 我想用透明背景从resized_im
中裁剪 object。 对工作有什么建议吗?
我也在这里尝试过: 如何根据二进制掩码裁剪图像,但似乎没有一个适用于我的情况
您只需要将分割掩码转换为 boolean numpy 数组,然后将图像乘以它。 不要忘记您的图像有 3 个通道,而掩码只有 1 个。它可能看起来像这样:
# seg_map - segmentation mask from network, resized_im - your input image
mask = np.greater(seg_map, 0) # get only non-zero positive pixels/labels
mask = np.expand_dims(mask, axis=-1) # (H, W) -> (H, W, 1)
mask = np.concatenate((mask, mask, mask), axis=-1) # (H, W, 1) -> (H, W, 3), (don't like it, so if you know how to do it better, please let me know)
crops = resized_im * mask # apply mask on image
如果要选择某些标签,可以使用不同的逻辑 numpy function,例如:
mask = np.equal(seg_map, 5) # to get only objects with label 5
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.