for文を使って動画をコマ飛ばしで表示、早送り風
PythonでOpenCVを使った動画の表示をfor文を使ってコマ飛ばしにして、早送り風にしたプログラムを紹介します。
動画の読み込みと表示はこちらの投稿で「Python OpenCVを使った動画の読み込みと表示」紹介しているので、この投稿ではfor文を使ってコマ飛ばしをするプログラムをメインに紹介します。コマ飛ばしのプログラムは5コマと10コマ飛ばしたプログラムを紹介します。
読み込んで表示した動画は「Pexels」の動画を使わさせてもらいました。
目次
・通常の動画
・for文を使って5コマ飛ばしにした動画
・for文を使った5コマ飛ばしにするプログラム
・for文を使って10コマ飛ばしにした動画
・for文を使った10コマ飛ばしにするプログラム
通常の動画
プログラムは「Python OpenCVを使った動画の読み込みと表示」この投稿で紹介したものを使っています。
for文を使って5コマ飛ばしにした動画
for文を使った5コマ飛ばしにするプログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import cv2 mv= cv2.VideoCapture('production ID_車.mp4')#動画の読み込み frame_count =int(mv.get(cv2.CAP_PROP_FRAME_COUNT))#動画のフレームをすべて取得 print("総フレーム",frame_count) for i in range(frame_count): for i in range(5):#5コマ飛ばしで読み込む ch,frame=mv.read() if ch==True: frame=cv2.resize(frame,(600,400)) cv2.imshow('movie', frame)#表示 k=cv2.waitKey(1)#1ミリ秒間フレームを表示 if k==27:#ESCキーを押したとき終了 break mv.release()#動画を閉じる cv2.destroyAllWindows()#ウインドウを閉じる |
for文を使ってコマ飛ばしをするプログラム9行目から14行目の説明をします。
まず9行目で動画を1枚1枚の画像にした枚数、繰り返しています。
10、11行目はfor i in range(5):で5回、ch,frame=mv.read()の実行を繰り返して5枚の画像を取り出します。そして、5枚目にあたる画像を14行目のcv2.imshow(‘movie’, frame)で表示しています。
このことから、動画を1枚1枚の画像にした枚数、繰り返すときに5枚飛ばしで表示するようにしています。
for文を使って10コマ飛ばしにした動画
for文を使った10コマ飛ばしにするプログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import cv2 mv= cv2.VideoCapture('production ID_車.mp4')#動画の読み込み frame_count =int(mv.get(cv2.CAP_PROP_FRAME_COUNT))#動画のフレームをすべて取得 print("総フレーム",frame_count) for i in range(frame_count): for i in range(10):#10コマ飛ばしで読み込む ch,frame=mv.read() if ch==True: frame=cv2.resize(frame,(600,400)) cv2.imshow('movie', frame)#表示 k=cv2.waitKey(1)#1ミリ秒間フレームを表示 if k==27:#ESCキーを押したとき終了 break mv.release()#動画を閉じる cv2.destroyAllWindows()#ウインドウを閉じる |
プログラムは5コマ飛ばしをするプログラムのfor文をfor i in range(10)にしただけです。