我一直试图弄清楚为什么numpy.array()方法将我的tiff图像转换为对象(dtype = object)。我尝试了其他tiff图像,我没有遇到这个问题。我很确定它必须对我的" actin2.tif"获得图像。我只需要能够将这个特定的tiff图像转换为2D数组。这就是我的代码:
>>> import numpy
>>> from PIL import Image
>>> a = Image.open('actin2.tif')
>>> a_array = numpy.array(a)
>>> a
<PIL.TiffImagePlugin.TiffImageFile image mode=I;16B size=37x58 at 0x14BBC68>
>>> a_array
array(<PIL.TiffImagePlugin.TiffImageFile image mode=I;16B size=37x58 at 0x14BBC68>, dtype=object)
我最终需要能够操纵图像中像素的值,如果不将图像转换为2D数组,我就无法做到这一点。目前,这是我尝试操作数组时抛出的错误:
structure_masked = numpy.multiply(structure_mask,image)
TypeError: unsupported operand type(s) for *: 'bool' and 'instance'
这是这行代码的结果:
structure_masked = numpy.multiply(structure_mask,image)
&#34; structure_mask&#34;和&#34;图像&#34;以与上述相同的方式转换为numpy数组。
我尝试过更改模式和dtype,但这似乎没有用,有什么建议吗?
答案 0 :(得分:0)
遇到同样的问题。原来我们正在运行PIL而不是Pillow。这为我们解决了这个问题:
sudo pip卸载PIL
sudo pip install pillow -U