🥚
Python(Google Colab)で.pngを.mp4にする
学校の授業で、大量の静止画(.png×300枚)をパラパラ漫画にして.mp4にしたい場面があったので、Google Colabでやってみました。
1. ノートブックをひらく
Google Colabで新しいノートブックを作成します。
ここではuntitled.ipynbとします。
2. 静止画を入れるフォルダを作る
Google Drive上に静止画を入れるフォルダを作って、そこに静止画をぶちこみます。
私の場合
MyDrive/gazou
を作り、gazouの中に全部の画像を入れてみました。
3. Google Driveをマウントする
これが一番重要。超大事です。
私はこの作業を忘れており、変数が定義されてないだのリストが空だのいろんなエラーを吐きまくって泣きながら色々試したのですが、最終的に自分のドライブにpath繋がってなかったのが原因とわかりました。バカすぎる。
untitled.ipynb
from google.colab import drive
drive.mount('/content/drive')
4. リストに全部の静止画を格納する
フォルダ「gazou」内に入れてある.pngの画像をimg_arrayというリストに格納しています。
最後に、print(len(img_array))をすることで、リストにちゃんと格納されたか確認してみます。
300枚の画像を読み込んだ場合、300と出力されるはずです。
untitled.ipynb
import glob
import cv2
img_array = []
for filename in sorted(glob.glob("/content/drive/MyDrive/gazou/*.png")):
img = cv2.imread(filename)
height, width, layers = img.shape
size = (width, height)
img_array.append(img)
print(len(img_array))
5. 動画に変換し、出力する
nameで出力先と名前を決めます。出力先はMyDrive直下、名前はdouga.mp4にしました。
outのところに書いてある引数の「20」は、フレームレートを示しているので、今回は1秒間に20枚パラパラしている感じですね。
うまくいけば、douga.mp4が出力されているかと思います。
untitled.ipynb
name = '/content/drive/MyDrive/douga.mp4'
out = cv2.VideoWriter(name, cv2.VideoWriter_fourcc(*'mp4v'), 20, size)
for i in range(len(img_array)):
out.write(img_array[i])
out.release()
おつかれさまでした。
Discussion