[英]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.