问题代码
mask_img = Image.open(r'../some_resources/logo.jpg')
mask = np.array(mask_img)
问题表现
print(type(mask_img))
<class 'PIL.PngImagePlugin.PngImageFile'>
print(mask)
[[[0 0 0 0]
[0 0 0 0]
[0 0 0 0]
...
[0 0 0 0]
[0 0 0 0]
[0 0 0 0]]]
可以看到mask_img的type就是错误的,mask数组的值也是全0
# 正确mask_img的type
<class 'PIL.JpegImagePlugin.JpegImageFile'> # JPG图像
<class 'PIL.PngImagePlugin.PngImageFile'> # PNG图像
# 正确mask数组
[[[233 233 233]
[240 240 240]
[243 243 243]
...
[236 236 236]
[236 236 236]
[236 236 236]]]
问题探究
经过各种查找解决问题之后,终于发现了问题的原因:
python的PIL库貌似无法读取有透明度的png图片
比如这两张矢量图,背景是透明的,加载就出错
更换为背景不透明的图片之后就成功了
比如更换为python的logo(实际上这个图片是不透明的,棋盘格仅仅只是图片效果)