【问题标题】:How to extract only the pixels of an image where it is masked? (Python numpy array operation)如何仅提取被遮罩的图像的像素? (Python numpy 数组操作)
【发布时间】:2020-03-28 07:55:27
【问题描述】:

我有一个图像及其对应的 cob 掩码作为 numpy 数组:

图像 numpy 数组的形状为 (332, 107, 3)。

掩码是布尔值(由 True/False 组成),并且此形状为二进制 (332, 107)。

 [[False False False ... False False False]
 [False False False ... False False False]
 [False False False ... False False False]
 ...
 [False False False ... False False False]
 [False False False ... False False False]
 [False False False ... False False False]]

如何获取cob的彩色像素(蒙版所在的彩色图像中的所有像素)?

【问题讨论】:

  • 你试过什么?一个简单的条件应该做到这一点,如果测试通过,则测试掩码的颜色,添加图像中的像素。
  • img[mask[..., None]]?
  • 我是编程新手。我尝试将不在掩码中的图像的所有像素设置为 0: img[mask==False]=0 但这不起作用。你的意思是我应该遍历数组中的每个元素?
  • 如果我使用 img[mask[..., None]] 我得到这个错误:IndexError: boolean index did not match indexed array along dimension 2;维度为 3,但对应的布尔维度为 1
  • 我认为你想要cob = img * mask,因为False 的计算结果为零。

标签: python image numpy mask


【解决方案1】:

感谢 M.Setchell 的有用评论,我自己找到了答案。

基本上,我必须将掩码数组 (2D) 的维度扩展到图像的相同维度(具有 3 个颜色通道的 3D)。

y=np.expand_dims(mask,axis=2)
newmask=np.concatenate((y,y,y),axis=2)

然后我必须简单地将新蒙版与图像相乘以获得彩色蒙版:

cob= img * newmask

这里只是为了可视化结果:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-05
    • 2022-10-23
    • 1970-01-01
    • 2018-05-29
    • 2016-06-09
    相关资源
    最近更新 更多