Python:对图像进行遮罩,使其仅包含遮罩外的像素

Python:对图像进行遮罩,使其仅包含遮罩外的像素,python,image,image-processing,image-segmentation,Python,Image,Image Processing,Image Segmentation,我正在尝试使用python遮罩强度图像,以便遮罩外的区域变为零。我这样做是为了多个区域的分割图像。我有一个边界框和感兴趣片段的二进制图像(见下面的代码) 这是我的代码摘录 I2=强度图像 掩码=二进制掩码 I2 = I.crop(RegionsBox[10]['BoundingBox']) Mask = RegionsImage[10]['Image'] I2[Mask==0]=0 最后一行返回一个错误 我已经在matlab中成功地实现了这一点 I3 = I2.*uint8(Mask); 有

我正在尝试使用python遮罩强度图像,以便遮罩外的区域变为零。我这样做是为了多个区域的分割图像。我有一个边界框和感兴趣片段的二进制图像(见下面的代码)

这是我的代码摘录

I2
=强度图像

掩码
=二进制掩码

I2 = I.crop(RegionsBox[10]['BoundingBox'])
Mask = RegionsImage[10]['Image']
I2[Mask==0]=0
最后一行返回一个错误

我已经在matlab中成功地实现了这一点

I3 = I2.*uint8(Mask);
有人知道Python中的等价物是什么吗


抱歉,如果我错过了一些明显的内容

您的
I
I2
似乎是图像对象,而不仅仅是nd数组。
可以使用numpy将
I2
转换为数组,对其应用掩码,然后将其转换回图像对象:

import numpy as np
from PIL import Image
ndI2 = np.ararray( I2 )
ndI2 = ndI2 * Mask # apply the mask as you applied it in Matlab
I3 = Image.frombuffer( I2.mode, I2.size, ndI2, "raw", I2.mode, 0, 1 )

你能粘贴你收到的错误吗?