PIL的Image对象与ndarray互转

2021年6月8日 / 29次阅读 / Last Modified 2021年6月8日
图像处理

本文记录如何将PIL的Image对象与numpy的ndarray对象互转。

将PIL的Image对象专为ndarray对象:

>>> from PIL import Image
>>> pimg = Image.open('bizhi01.jpg')
>>>
>>> import numpy as np
>>> nimg = np.array(pimg)
>>> nimg.shape
(600, 800, 3)
>>> nimg.dtype
dtype('uint8')
>>>
>>> nimg2 = np.asarray(pimg)
>>> nimg2.shape
(600, 800, 3)
>>> nimg2.dtype
dtype('uint8')

创建ndarray的接口,就可以直接输入PIL的Image对象。

网上有人说,如果出现read-only这样的提示,此时得到的ndarray只读,可以通过下面的方式来修改:

>>> nimg.flags
  C_CONTIGUOUS : True
  F_CONTIGUOUS : False
  OWNDATA : True
  WRITEABLE : True
  ALIGNED : True
  WRITEBACKIFCOPY : False
  UPDATEIFCOPY : False

>>> nimg.flags.writeable
True
>>> nimg.flags.writeable = False
>>> nimg.flags.writeable = True

将ndarray转换成PIL的Image对象:

>>> pimg2 = Image.fromarray(nimg2)
>>> pimg2.mode
'RGB'

接口为Image.fromarray

-- EOF --

本文链接:https://www.pynote.net/archives/3706

留言区

《PIL的Image对象与ndarray互转》有1条留言

您的电子邮箱地址不会被公开。 必填项已用*标注

  • 麦新杰

    将ndarray的yuv数据,转成pillow的image,用image.convert转rgb,然后再转回rgb的ndarray数据,显示。 [回复]


前一篇:
后一篇:

More


©Copyright 麦新杰 Since 2019 Python笔记

go to top