元動画から動体抽出を行った動画を保存したい
動体抽出にはチュートリアルのcv2.createBackgroundSubtractorMOG2を使用.
これで作成した,フレームを動画として保存しようとすると、6kbの一画像のみからなる動画ファイルが出力されてしまう
発生している問題・エラーメッセージ
エラーメッセージ:特になし 出力ファイルが動画になっていない
該当のソースコード
python
1import numpy as np 2import cv2 3import os 4 5FILE_ORG = "動画ファイル.avi" 6 7 8# 元ビデオファイル読み込み 9cap = cv2.VideoCapture(FILE_ORG) 10 11# 情報取得 12width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) 13height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) 14fps = cap.get(cv2.CAP_PROP_FPS) 15 16# 背景差分で背景取得 17fgbg = cv2.createBackgroundSubtractorMOG2(detectShadows = False) 18 19# VideoWriter を作成 20fourcc = cv2.VideoWriter_fourcc(*'DIVX') 21writer = cv2.VideoWriter('出力ファイル名.avi', fourcc, fps, (width, height)) 22 23 24while True: 25 ret, frame = cap.read() 26 if not ret: 27 break 28 29 fgmask = fgbg.apply(frame) 30 31 writer.write(fgmask) # フレームを書き込む。 32 33 k = cv2.waitKey(30) & 0xff 34 if k == 27: 35 break 36 37 38writer.release() 39cap.release()
試したこと
VideoWriterを使わずに、静止画を連番で出力し,その静止画を元に動画を作成すれば欲しいものはできたが,手間がかかる
補足情報(FW/ツールのバージョンなど)
python3 OpenCV4
回答1件
あなたの回答
tips
プレビュー