PythonとOpenCVを使えば、Webカメラの映像をリアルタイムにキャプチャし、動画ファイル(MP4など)として保存することができます。防犯カメラや会議記録、実験ログなど、映像記録が必要なシーンで活用可能です。
この記事では、OpenCVを使ってカメラ映像を録画し、MP4ファイルとして保存する方法を紹介します。
必要なライブラリ
pip install opencv-python
OpenCV単体で録画からファイル出力まで可能です。
基本スクリプト:録画してMP4で保存
import cv2
# カメラ起動
cap = cv2.VideoCapture(0)
# 解像度の取得(例:640x480)
frame_width = int(cap.get(3))
frame_height = int(cap.get(4))
# 出力ファイル名とコーデック(MP4は"mp4v")
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
out = cv2.VideoWriter('output.mp4', fourcc, 20.0, (frame_width, frame_height))
print("録画開始。qキーで終了。")
while cap.isOpened():
ret, frame = cap.read()
if not ret:
break
out.write(frame) # 映像をファイルに書き込み
cv2.imshow('Recording', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
out.release()
cv2.destroyAllWindows()
print("録画を終了しました。")
録画ファイルの保存形式を変更する
- MP4:
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
- AVI:
fourcc = cv2.VideoWriter_fourcc(*'XVID')
出力ファイル名の拡張子(例:output.avi
)も合わせて指定します。
応用:録画時間を制限する
import time
start_time = time.time()
while True:
# ...
if time.time() - start_time > 60: # 60秒で終了
break
応用:録画ファイルに日付を自動付与
import datetime
now = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
filename = f"record_{now}.mp4"
out = cv2.VideoWriter(filename, fourcc, 20.0, (frame_width, frame_height))
注意点
- MP4形式の出力には
ffmpeg
やOpenCV-contrib
が必要な場合あり - 録画できない場合はコーデックをAVIに変更してテスト
- 解像度とフレームレートは使用するカメラに依存
まとめ
PythonとOpenCVを使えば、Webカメラの映像を簡単に録画・保存できます。MP4形式で出力すれば高圧縮かつ高画質で管理しやすく、セキュリティ用途や業務記録にも応用可能です。
録画条件の自動化やファイル分割、クラウド保存と組み合わせることで、より実用的な録画システムも構築できます。まずは基本の録画処理から試してみましょう。