画像処理ライブラリOpenCVで動画ファイルを保存する場合、VideoWriter_fourccにより動画コーデックを指定しVideoWriterでVideoWriter型オブジェクトを生成、VideoWriter型オブジェクトに画像を追加し動画として保存する。
OpenCVを使うには次のようにインポートが必要。
import cv2
1. VideoWriterの書式
VideoWriterの書式は以下
cv2.VideoWriter(filename, fourcc, fps, frameSize[, isColor])
引数 | 意味 |
---|---|
filename | 保存する動画ファイル名 |
fourcc | FourCC(Four Character Code:フォーシーシー)。動画のコーデックを指定する4文字のコード。'MJPG','mp4v','X264','XVID'等(使用できるコーデックは環境に依存する)。 (*'mp4v')もしくは('m', 'p', '4', 'v')の形式で指定する |
fps | 動画のフレームレート。フレーム/秒 |
frameSize | 動画のフレームサイズ。(x, y)のピクセル |
isColor | オプション。0以外の場合カラーフォーマット、0の場合はグレースケールフォーマットとなる。 |
2. 動画の保存例
位置とサイズが変わる青い円をコーデックX264、コンテナ(拡張子)mp4で動画保存する場合。VideoWriter_fourccでコーデックのfourccを指定しVideoWriterでVideoWriterオブジェクトを生成、そこに画像を記録する。最後にvideo.release()でVideoWriterオブジェクトを解放する。 フレームレートは25.0フレーム/秒、フレームサイズは640x360を指定。同じサイズの画像を追加して動画化する。
import cv2 import numpy as np fourcc = cv2.VideoWriter_fourcc(*'X264') video = cv2.VideoWriter('movie.mp4', fourcc, 25.0, (640, 360)) for i in range(100): img = np.zeros((360, 640, 3), np.uint8) cv2.circle(img, (i*6, i*3), i, (255, 0, 0), -1, cv2.LINE_AA) video.write(img) video.release()
同じ動画をコーデックMJPG、コンテナ(拡張子)MOVで保存する場合。
import cv2 import numpy as np fourcc = cv2.VideoWriter_fourcc(*'MJPG') video = cv2.VideoWriter('movie.MOV', fourcc, 25.0, (640, 360)) for i in range(100): img = np.zeros((360, 640, 3), np.uint8) cv2.circle(img, (i*6, i*3), i, (255, 0, 0), -1, cv2.LINE_AA) video.write(img) video.release()
同じ動画をコーデックmp4v、コンテナ(拡張子)mp4で保存する場合。
import cv2 import numpy as np fourcc = cv2.VideoWriter_fourcc(*'mp4v') video = cv2.VideoWriter('movie.mp4', fourcc, 25.0, (640, 360)) for i in range(100): img = np.zeros((360, 640, 3), np.uint8) cv2.circle(img, (i*6, i*3), i, (255, 0, 0), -1, cv2.LINE_AA) video.write(img) video.release()
同じ動画をコーデックXVID、コンテナ(拡張子)aviで保存する場合。
import cv2 import numpy as np fourcc = cv2.VideoWriter_fourcc(*'XVID') video = cv2.VideoWriter('movie.avi', fourcc, 25.0, (640, 360)) for i in range(100): img = np.zeros((360, 640, 3), np.uint8) cv2.circle(img, (i*6, i*3), i, (255, 0, 0), -1, cv2.LINE_AA) video.write(img) video.release()
3. リファレンス
OpenCV > cv::VideoWriter Class Reference > VideoWriter()
OpenCV > cv::VideoWriter Class Reference > fourcc()
Video Codecs by FOURCC
使用したバージョン:Python 3.8.12 / OpenCV 4.5.5
0 件のコメント:
コメントを投稿