python+openCVで作成したmp4ファイルを再生できない

実現したいこと

前提

poetry+python+openCVでクロマキー処理を行うプログラムを作っています。
動画の書き出しを実行している最中にエラーメッセージは出力されていないにも関わらず、できた動画は再生することができません。
ファイルサイズも1KBとなっています。

該当のソースコード

python

1import cv2 2import numpy as np 3 4# 取り込む動画や出力先の情報をまとめたファイル5from Variables import *6 7# 動画と背景画像の読込8path = f'{MATERIALS}/{FILENAME}'9video = cv2.VideoCapture(path)10width = int(video.get(cv2.CAP_PROP_FRAME_WIDTH))11height = int(video.get(cv2.CAP_PROP_FRAME_HEIGHT))12print("動画読み込み")13 14# 動画の総フレーム数を取得15frame_count = int(video.get(cv2.CAP_PROP_FRAME_COUNT))16print("フレーム数読み込み")17 18# 書き出し用のwriteクラスを作成19fps = video.get(cv2.CAP_PROP_FPS)20fourcc = cv2.VideoWriter_fourcc(*"mp4v")21writer = cv2.VideoWriter("outputs/chroma.mp4", fourcc, fps, (width, height), 1)22print("ライタークラス作成")23 24def create_frame(input_frame):25 # コントラスト調整26 contrast_image = cv2.convertScaleAbs(input_frame, alpha=contrast_adjustment_value, beta=0)27 28 # クロマキー処理と二値化29 hsv_chroma_key_color = cv2.cvtColor(chroma_key_color, cv2.COLOR_BGR2HSV)30 lower_green = np.array([hsv_chroma_key_color[0][0][0] - chroma_key_threshold, 50, 50])31 upper_green = np.array([hsv_chroma_key_color[0][0][0] + chroma_key_threshold, 255, 255])32 hsv_image = cv2.cvtColor(contrast_image, cv2.COLOR_BGR2HSV)33 chroma_key_image = cv2.inRange(hsv_image, lower_green, upper_green)34 mask_image = cv2.bitwise_not(chroma_key_image)35 36 # ノイズ除去37 result_image = cv2.cvtColor(frame, cv2.COLOR_BGR2BGRA) # RGBA形式に変換38 result_image[:, :, 3] = mask_image # アルファチャンネルにマスク画像を設定39 40 return result_image 41 42for i in range(frame_count):43 success, frame = video.read()44 45 if not success:46 print("failed reading")47 break48 49 chroma_frame = create_frame(frame)50 51 # 画像を動画へ書き出し52 writer.write(chroma_frame)53 54# 読み込んだ動画と書き出し先の動画を開放55video.release()56writer.release()57 58print("finish!")

そもそも画像処理に問題があるかもと考えましたが、画像の出力は問題なくできました。
出力された画像も確認でき、それぞれ意図する処理が正しく行われていました。

補足情報(FW/ツールのバージョンなど)

  • poetry v1.8.3
  • python 3.10.12
  • openCV v4.9.0.80

コメントを投稿

0 コメント