概要
最近、ディープラーニングで視覚関連のことを研究しています。そして、Pythonの画像処理ライブラリを使用して画像を読み取り、一連の画像処理タスクを実行する必要があります。
しかし、Pythonには画像処理に使用できるライブラリがたくさんあり、ライブラリごとに使用方法が多少異なり、画像の読み取りと保存の方法も大きく異なります。これらのライブラリを注意を払わないと、いろんな問題が発生します。
そこで、6つの主流のPythonイメージライブラリに注意が必要な基本的な使用方法とポイントを要約しました:
- OpenCV https://docs.opencv.org/master/d6/d00/tutorial_py_root.html
- PIL(pillow) https://pillow.readthedocs.io/en/stable/
- matplotlib.image https://matplotlib.org/3.3.3/tutorials/introductory/images.html
- skimage https://scikit-image.org/docs/dev/index.html
- imageio https://imageio.readthedocs.io/en/stable/
- keras.preprocessing.image https://keras.io/api/preprocessing/image/
画像の読み込み
画像処理ライブラリを使用する際に注意すべき最も重要なことは、画像の読み取り部分です。画像を読み取った後の保存方法が異なると、問題が発生する可能性があります。
1.OpenCV:画像の読み込み後のタイプ: numpy.ndarray; 画像のチャンネル配列がBGRであって、主流のRGBではない
|
import cv2 # カラー画像を読み込み、灰色の画像に変換 img = cv2.imread('1.jpg') cv2.imshow('color',img) gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) cv2.imshow('gray',gray) # 画像に対してマトリックス変化と次元向上 img = img.transpose(2,0,1) img = np.expand_dims(img, axis=0) |
|
2. PIL(pillow) : 画像の読み込み後のタイプ: Object対象; numpy.asarray() または numpy.array() 関数を使用して、numpy.ndarrayに変換できます
|
from PIL import Image img = Image.open('1.jpg') #カラー画像を読み込み、灰色の画像に変換 gray = Image.open('1.jpg').convert('L') img.show() gray.show() |
|
3. matplotlib.image:画像の読み込み後のタイプ: numpy.ndarray
|
import matplotlib.pyplot as plt import matplotlib.image as mpimg img = mpimg.imread('1.jpg') plt.imshow(img) |
|
4. skimage : 画像の読み込み後のタイプ: numpy.ndarray
|
import skimage.io as io img = io.imread('1.jpg') io.imshow(img) |
|
5. imageio : 画像の読み込み後のタイプ: numpy.ndarray
|
import imageio import matplotlib.pyplot as plt img = imageio.imread('1.jpg') plt.imshow(img) |
|
6. keras.preprocessing.image : 画像の読み込み後のタイプ: Object対象
|
from keras.preprocessing.image import load_img, array_to_img, img_to_array img = load_img('1.jpg') # from img to array img_arr = img.img_to_array(img) |
|
まとめ
もし6つの画像ライブラリの性能を比較すると、スピードと画像処理の全面性から考えて、一番強いのはOpenCVです。
他のライブラリもそれぞれのメリットがあります。知ってから、自分の好みによって、適当なライブラリを選べば良いです。