0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Pythonモジュール別の画像読み込み方法比較

Posted at

目的

様々なPythonモジュールにおける画像ファイルの読み込み方法、および読み込まれた画像の状態についてまとめる

ラインナップ

  • pillow
  • openCV
  • torchvision (PyTorchのサブモジュール)
  • keras.preprocessing.image
  • scikit-image
  • imageio (画像入出力に特化したシンプルなライブラリ)
  • imgaug (画像前処理ライブラリ)

比較

前提

import numpy as np
import pathlib

from PIL import Image
import cv2 as cv
import skimage
import imageio
import imgaug as ia
from keras.preprocessing import image as k_prep_img
import torchvision

path = pathlib.Path("path/to/the/image/file")

比較表

pillow openCV torchvision keras.preprocessing skimage imageio imgaug
画像読み込み Image.open(path) cv.imread(path.name) torchvision.io.read_image(path) k_prep_img.load_img(path) skimage.io.imread(path) cv.imageio(path) ia.imageio.imread(path)
画像の状態 Imageオブジェクト numpy配列 tensor numpy配列 numpy配列 numpy配列 numpy配列
チャネル順 RGB BGR BGR 調査中 RGB RGB RGB

補足

  • openCVではpathlibのPathオブジェクトをそのまま引数に与えることができなかったので.nameとしてファイル名を取り出している。
  • pillowで読み込んだ画像をnumpy変換するにはnp.asarray(image)とするが、元のImageオブジェクトの保有するデータへの参照としてのnumpy配列が作られるので、デフォルトでflags.writable = Falseになっている。処理する前提でnumpyにしたい場合はnp.array(image)とすればいい。

所感

imageioが一番シンプルに書ける。

TODO

処理速度の観点での比較をする

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?