Python:对图像进行遮罩,使其仅包含遮罩外的像素
我正在尝试使用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); 有
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 )
你能粘贴你收到的错误吗?