我试图屏蔽强度图像,以便使用python将掩码外的区域变为零。我这样做是为了分割多个区域的图像。我有一个感兴趣的片段的边界框和二进制图像(见下面的代码)
以下是我的代码摘录
I2
=强度图片
Mask
=二元掩码
I2 = I.crop(RegionsBox[10]['BoundingBox'])
Mask = RegionsImage[10]['Image']
I2[Mask==0]=0
最后一行返回错误....
我过去用matlab在matlab中成功实现了这个
I3 = I2.*uint8(Mask);
有谁知道Python中的等价物是什么?
如果我错过了一些明显的东西,请道歉
答案 0 :(得分:0)
您的I
和I2
似乎是图片对象,而不仅仅是nd-arrays。
您可以使用numpy将I2
转换为数组,将掩码应用于它,然后将其转换回Image对象:
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 )