OpenCVからPillowに画像データを変換
PythonのOpenCVから画像を扱うPillowというライブラリに渡してみます。
OpenCVからPillowにはNumpy配列を介して渡せるのですが、3色の順番がOpenCVはBGRで、PillowがRGBという違いがあるようで、変換が必要でした。
import cv2 import PIL.Image def buildVideoCaptures(videoPath, outputPath): cap = cv2.VideoCapture(videoPath) if not cap.isOpened(): return _, img = cap.read() # imgは読み込んだフレームのNumpy配列でのピクセル情報(BGR) # imgのshapeは (高さ, 横幅, 3) # BGRをRGBに変換 # これをしないと色が変になる img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # Numpy配列からPillowのImageオブジェクトに変換 img = PIL.Image.fromarray(img) # 画像ファイルで書き出す img.save(outputPath, format = "JPEG") buildVideoCaptures("./sample.mp4", "./thumbnail.jpg")
バージョン情報
$ pipenv install opencv-python $ pipenv install pillow $ pipenv run pip list Package Version ------------- -------- numpy 1.19.5 opencv-python 4.5.1.48 Pillow 8.1.0 pip 20.3.1 setuptools 51.0.0 wheel 0.36.1
関連
PillowとOpenCVについて最近の記事