OpenCVで動画ファイルの最終フレームを取得
OpenCVで動画ファイルの最終フレームを取得 PythonとOpenCVを使用して動画ファイルの最大フレーム数を取得する方法を解説をします。処理の確認用に取得した最大フレーム数とファイル名をソートして表示させます。 コ […]
Filter by Category
OpenCVで動画ファイルの最終フレームを取得 PythonとOpenCVを使用して動画ファイルの最大フレーム数を取得する方法を解説をします。処理の確認用に取得した最大フレーム数とファイル名をソートして表示させます。 コ […]
rembgで背景を削除した画像を編集して元の画像と再合成 YouTubeにアップロードしたrembgで背景を削除する説明動画にコメントをいただいたので、rembgを使った画像処理の続編です。rembgで背景を削除した画像 […]
MacにGoProをウェブカメラとして認識させてOpenCVで使う MacとGoProを繋ぎ、GoProをウェブカメラとして認識させてOpenCVに映像を入力します。今回は映像を取り込んで画面に表示するだけですが、Pyt […]
pythonのOpenCVで輪郭を上手く抽出することができなかったが、いくつかの改善点により上手く行った経緯をここに書き残しておく。 改善前 これは50×50のスカートの画像である。単にfindcontourし […]
OpenCVで複数の動画を連結する 複数の動画素材を結合したり、GoProで長時間撮影した時に約4GB毎に分割される動画ファイルを結合して一つの動画を書き出す方法です。 コードはGitHubリポジトリにあげています。 開 […]
名前に現在時刻を入れたファイルが連番かどうか判定(後半) 前回からの続きです。 前回は連番になっていたらまとめてリスト化しましたが、今回はまとめたファイルを動画に変換して書き出します。 コードはGitHubリポジトリにあ […]
OpenCVで複数の画像から動画ファイルを作る 前回に続き、今回は複数の画像をまとめて動画ファイルに変換する方法です。gifアニメーションを生成するときはPillowを使いましたが、動画を生成するときはOpenCVを使い […]
PythonとOpenCVを使用して動画ファイルの最大フレーム数を取得する方法を解説をします。処理の確認用に取得した最大フレーム数とファイル名をソートして表示させます。
コードはGitHubリポジトリにあげています。
PC: MacBook Pro (14, 2021)
OS: macOS Monterey 12.0.1
Python: 3.9.1
opencv-python: 4.8.0.76
import cv2
import os
def get_max_frame_count(video_file):
cap = cv2.VideoCapture(video_file)
if not cap.isOpened():
print(f"Error opening video file: {video_file}")
return 0
frame_count = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
cap.release()
return frame_count
def main(directory_path):
video_info_list = []
for filename in os.listdir(directory_path):
if filename.endswith(".mp4"):
video_file = os.path.join(directory_path, filename)
max_frame_count = get_max_frame_count(video_file)
video_info_list.append(
{"filename": filename, "max_frame_count": max_frame_count}
)
sorted_video_info = sorted(video_info_list, key=lambda x: x["filename"])
for video_info in sorted_video_info:
filename = video_info["filename"]
max_frame_count = video_info["max_frame_count"]
print(f"{filename}, Max Frame Count: {max_frame_count}")
if __name__ == "__main__":
video_directory = "video"
main(video_directory)
600.mp4, Max Frame Count: 17983
1200.mp4, Max Frame Count: 17989
1800.mp4, Max Frame Count: 17983
2400.mp4, Max Frame Count: 11805
def get_max_frame_count(video_file)
cap = cv2.VideoCapture(video_file)
動画ファイルを開く
if not cap.isOpened():
動画ファイルが正常に開けなかった場合はエラーを表示
frame_count = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
最大フレーム数を取得
cap.release()
動画ファイルを閉じる
def main(directory_path)
video_info_list = []
動画ファイルを格納する空リスト用を生成
for filename in os.listdir(directory_path):
ディレクトリからファイルをリストアップして1っ件づつ処理
if filename.endswith(".mp4"):
ファイル名が.mp4で終わる場合のみ処理
max_frame_count = get_max_frame_count(video_file)
先述の関数で最大フレーム数を取得
video_info_list.append({"filename": filename, "max_frame_count": max_frame_count})
ファイル名と最大フレーム数の辞書をリストに追加
sorted_video_info = sorted(video_info_list, key=lambda x: x["filename"])
リストをファイル名でソート
for video_info in sorted_video_info:
ファイル名と最大フレーム数を一件づつ表示
群馬県でPythonを使ったAIやソフトウェアを開発している株式会社ファントムが運営しています。
メーリングリストに登録するとファントムの最新情報をお届けします
お客様のメールアドレスを共有することはありません