Atom's tech blog

OpenCVで入力画像を動画ファイルに書き込みしてみた

概要

  • 動画ファイル書き込み用のオブジェクト生成
  • ファイル形式 : mp4v、フレームレート : 10fps、サイズ : VGA
  • カメラから画像をキャプチャー
  • キャプチャーしたイメージファイルデータを動画ファイルに書き込み

コメント

  • 画像ファイル保存はトライ済みだったので、今回は動画ファイルの保存を試みた
  • ファイル形式は.m4v, .avi......など
  • ソースコードはとてもシンプル
  • ラズパイでも動作可能
  • OpenCVの動体検知と組み合わせで玄関、部屋などの監視カメラで使えそう
  • 使ったツールバージョンは以下
  • MacOS Catalina / python3.5.6 / Opencv3.4.2 / VS code1.38.1

ファイル構成

  • video_save.py : 動画ファイル保存ソースファイル(下のソースコード

ソースコード

# coding: utf-8
import cv2
import numpy as np

###############################
# VideoCapture用インスタンス生成
###############################
cap = cv2.VideoCapture(0)

#動画ファイル書き込み用のオブジェクト生成(mp4v,10fps,VGA)
format = cv2.VideoWriter_fourcc('m','p','4','v')
fps = 10
size = (640,480)
writer = cv2.VideoWriter('video_save.m4v',format,fps,size)

###############################
# 画像サイズをVGAサイズに変更する
###############################
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640) 
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)

while True:

    # カメラから画像データ取得
    _,img =cap.read()
    # Video Save
    writer.write(img)
    # 画像表示
    cv2.imshow('video_save',img) 
    # ESCキーで終了
    k = cv2.waitKey(10) & 0xff 
    if k == 27:
        break

# Do a bit of cleanup
print("\n Exit Program")
writer.release()
cap.release()
cv2.destroyAllWindows()

これを応用して画像ファイルから動画ファイル作成もできるので、今後トライしてみる