Python中常用图像操作

1. 读取图片

# ---------- PIL ----------
I = PIL.Image.open('test.png') # 类型: PIL.Image
# ---------- scipy.misc ----------
from scipy.misc import imread # deprecated 
img = imread('test.png') # np.array
# ---------- imageio ----------
from imageio import imread
# ---------- matplotlib ----------
import matplotlib.image as mpimg
img = mpimg.imread('test.png') # np.array,适合读png图片,其他可能会有损失

2. 图像类型转化

# ---------- PIL.Image to numpy.ndarray ----------
I = numpy.asarray(PIL.Image.open('test.png')) # 浅拷贝
I = numpy.array(PIL.Image.open('test.png')) # 深拷贝
# ---------- numpy.ndarray to PIL.Image ----------
img = PIL.Image.fromarray(numpy.uint8(I))

3. 图片缩放

# ---------- scipy.misc ----------
from scipy.misc import imresize # deprecated
# ---------- skimage.transform ----------
from skimage.transform import resize
# ---------- PIL Image resize ----------
pil_img = pil_img.resize(size=(width, height), resample=PIL.Image.BILINEAR)

4. 图像颜色空间转换

# ---------- skimage.color ----------
from skimage import color
img = color.gray2rgb(img)
# ---------- PIL ----------
pil_image = pil_img.convert('RGB')

5. 保存图片

# ---------- scipy.misc ----------
from scipy.misc import imsave # deprecated
# ---------- imageio ----------
from imageio import imwrite # 依赖于pillow
# ---------- PIL save ----------
pil_img.save(fname) # 推荐

6. 图片损坏检查

from PIL import Image
import shutil
try:
    img = Image.open(f)
    img.verify()
except IOError:
    print(f)
    shutil.move(f, dst)
Table of Contents