Image中resize函数报错:ValueError:image has wrong mode

img_pil_u500 = np.array(img_uint500)
im_u500 = Image.fromarray(img_pil_u500) 
im_u500r = im_u500.resize((W,H),Image.ANTIALIAS)  
im_u500r.save(outputpath+str(n)+'-raw_u500pil.tif')

因为img_uint500是np.uint16的
第三句,resample的参数只能默认为Image.NEAAREST才不会报错
一旦修改就会报错:
ValueError: image has wrong mode
但是在插值中NEAREST虽然性能最好,但是效果最差
为了不丢失掉图片中的信息,最好选一个根据自己的需要选择插值算法

解决方法:
将img_uint500的数据类型转成np.uint32的话,上述代码就能运行
生成的tif图片可以直接用scipy.misc读取,得到的数据类型是int32

个人理解的原因:
The mode of an image defines the type and depth of a pixel in the image. The current release supports the following standard modes:
1 (1-bit pixels, black and white, stored with one pixel per byte)
L (8-bit pixels, black and white)
P (8-bit pixels, mapped to any other mode using a color palette)
RGB (3x8-bit pixels, true color)
RGBA (4x8-bit pixels, true color with transparency mask)
CMYK (4x8-bit pixels, color separation)
YCbCr (3x8-bit pixels, color video format)
Note that this refers to the JPEG, and not the ITU-R BT.2020, standard
LAB (3x8-bit pixels, the Lab color space)
HSV (3x8-bit pixels, Hue, Saturation, Value color space)
I (32-bit signed integer pixels)
F (32-bit floating point pixels)

Image的mode中并不支持16bit的pixels

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值