Python OpenCVを使った動画の読み込みと表示
PythonでOpenCVを使った動画の読み込みとそれを表示をするプログラムを紹介します。
読み込んで表示した動画は「Pexels」の動画を使わさせてもらいました。
目次
・読み込んだ動画を表示した様子
・読み込んだ動画を表示するプログラム
読み込んだ動画を表示した様子
読み込んだ動画を表示するプログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import cv2 import numpy as np mv= cv2.VideoCapture('production ID_車2.mp4')#動画の読み込み frame_count =int(mv.get(cv2.CAP_PROP_FRAME_COUNT))#動画のフレームをすべて取得 print("総フレーム",frame_count) for i in range(frame_count): ch,frame=mv.read()#1フレームずつ取り出す if ch==True:#取り出せたら、変数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()#ウインドウを閉じる |
プログラムの説明をします。
まず4行目のcv2.VideoCapture()を使って指定した動画を読み込み変数mvに動画データを入れています。読み込む動画の配置はこのプログラムを実行する同じ場所に配置します。
5行目はint(mv.get(cv2.CAP_PROP_FRAME_COUNT))で読み込んだ動画を1枚1枚の画像にしたきの総枚数を調べています。そして、調べた総枚数を変数frame_countに入れています。このときにint型にしないとエラーがでます。
9行目から13行目は調べた総枚数をfor文で繰り返していき、mv.read()で1画像(1フレーム)ずつ取り出して、表示する画像サイズをcv2.resize(frame,(600,400))で調整してから、cv2.imshow(‘movie’, frame)で表示しています。
10行目のmv.read()で1画像(1フレーム)ずつ取り出す際に下のif文で取り出せたかどうかの確認をしています。取り出せすことができたら表示し、取り出せなかったら表示しないプログラムにしています。
15行目から17行目はcv2.waitKey(1)で取り出した画像を1ミリ秒表示するようにして、if k==27:とbreakでキーボードのESCキーを押したら動画の表示をしないようにしています。
最後の19、20行目は動画の表示が終われば、表示を終了してウインドウ(表示画面)を閉じるようにしています。