前提・実現したいこと
ラズパイ4でpythonを導入し、opencvを用いてwebカメラから得られた動画を背景差分処理して、保存したいです。
環境
Raspberry PI4で
Thonny Python IDEを用いて実行しています。
.python 3.7.3
.opencv version 3.2.0
発生している問題・エラーメッセージ
プログラムは最後まで実行されます。
実行すると、以下のエラーが動画を保存するたびにでて、動画は指定した場所に保存されていますが、その動画を再生することができません。(VLCメディアプレイヤー)
line〇〇にエラーと出ていないため、どこが違うのかがわかりません。
ご教授をお願いいたします。
エラーメッセージ
Corrupt JPEG data: 2 extraneous bytes before marker 0xd1 Corrupt JPEG data: 1 extraneous bytes before marker 0xd0 Corrupt JPEG data: 3 extraneous bytes before marker 0xd4 、 、 、
該当のソースコード
# coding: utf-8 import cv2 from datetime import datetime cap = cv2.VideoCapture(0) # 動画ファイル保存用の設定 fps = int(cap.get(cv2.CAP_PROP_FPS)) fps=15 # カメラのFPSを取得 w = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) # カメラの横幅を取得 h = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) # カメラの縦幅を取得 fourcc = cv2.VideoWriter_fourcc('m', 'p', '4', 'v') # 動画保存時のfourcc設定(mp4用) video = cv2.VideoWriter('video1.mp4', fourcc, fps, (w, h), False) # 動画の仕様(ファイル名、fourcc, FPS, サイズ) video1 = cv2.VideoWriter('video2.mp4', fourcc, fps, (w, h)) #背景差分の準備 bgs = cv2.createBackgroundSubtractorKNN() #仕事関数 def task(): while(cap.isOpened()): ret, frame = cap.read() #時刻の表示 date = datetime.now().strftime("%H:%M.%S.%f") cv2.putText(frame,date(0,30),cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255,255), 3, cv2.LINE_AA) #背景差分の設定 mask = bgs.apply(frame) #動画表示 cv2.imshow('mask',mask) cv2.imshow('frame',frame) #動画保存 video.write(mask) video1.write(frame) #Q押すと終了 key = cv2.waitKey(1) & 0xFF if key == ord('q'): break #実行 task() #後処理 cap.release() cv2.destroyAllWindows() ```python3.7.3
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。