【OpenCV】Pythonでpng・jpg形式画像をmp4動画ファイルに変換する方法

プログラミング
スポンサーリンク

スポンサーリンク

はじめに

どーも、可視化研究室でデータサイエンスを学んでいるゆうき(@engieerblog_Yu)です。

今回は研究の方で画像を繋げて動画にする機会があったので、ログを残しておきます。

今回は以下の記事を参考にさせていただきました。

【Python】glob.globで読み込んだファイルの順番が名前順じゃないときの対応(Sortedを使って並べ替え)

OpenCVで複数の画像から動画ファイルを作る

pip installでModuleNotFoundError: No module named ‘skbuild’が出た時

ライブラリのインポート

pip3 install opencv-python

No module named ‘skbuild’となった方は、pipをアップグレードすることでうまくいくと思います。

pip3 install -U pip

画像をmp4に変換するコード

ディレクトリは以下です。

images:繋げたい順に画像を保存したフォルダ

mp4.py:画像をmp4に変換するコード

project.mp4:出力動画

コードは以下になります。

import glob

import cv2

import re

def atoi(text):
    return int(text) if text.isdigit() else text

def natural_keys(text):
    return [ atoi(c) for c in re.split(r'(\d+)', text) ]

img_array = []
for filename in sorted(glob.glob("images/*.png"), key=natural_keys):
    img = cv2.imread(filename)
    height, width, layers = img.shape
    size = (width, height)
    img_array.append(img)

name = 'project.mp4'
out = cv2.VideoWriter(name, cv2.VideoWriter_fourcc(*'mp4v'), 5.0, size)

for i in range(len(img_array)):
    out.write(img_array[i])
out.release()

参考記事ではMP4Vとなっていましたが、私の場合は小文字にするとうまくいきました。

out = cv2.VideoWriter(name, cv2.VideoWriter_fourcc(*'MP4V'), 5.0, size)

jpgの方は、以下でうまくいくと思います。

for filename in sorted(glob.glob("images/*.jpg")):

終わりに

パラパラ漫画のように動画を作るのがすごく楽しかったです。

皆さんのお役に立てば何よりです。

ゆうき
ゆうき

最後まで読んでいただきありがとうございました。

他にも画像処理系の記事を出しているので合わせてどうぞ。

コメント

タイトルとURLをコピーしました