Python : 動画の読み込み ループ再生
Pythonの動画読み込みをする際のループ再生をする場合です。
前回紹介した下記の記事から一部変更するだけです。
変更する場所は、下から4行目のelse:の後に、
最初のフレームに戻す下記に変更するだけです。
cap.set(cv2.CAP_PROP_POS_FRAMES,nini_start)
このnini_startは0になっているので最初のフレームに戻りますが、
別の場所にしたければ、この数字を変更すれば途中のフレームに戻ります。
この内容ですが、while文の中にif文で
if ret:
とcapが存在するかを見ているのですが、このフレームがなくなるときすなわち
else:
の時に、また最初のフレームに戻すという流れになっています。
詳細のプログラムは下記になります。
import cv2
#動画のアドレスを指定
cap = cv2.VideoCapture('movie.mp4')
#どのフレームかた始めるか指定;0は最初から
nini_start = 0
cap.set(cv2.CAP_PROP_POS_FRAMES,nini_start)
#while文にてカメラがつながっている限りは動画撮影
while True:
#動画を読み込む
ret,frame1 = cap.read()
#動画が存在するか否か
if ret:
#30msec待つ;これを入れないと早すぎて見れないです。
cv2.waitKey(30)
#画像の呼び出し
cv2.imshow('frame1',frame1)
#qを押したら終了
key = cv2.waitKey(1)
if key & 0x00FF == ord('q'):
break
#動画が終了したら、whileループを抜ける
else:
#最初のフレームに戻る。
cap.set(cv2.CAP_PROP_POS_FRAMES,nini_start)
#画像をすべて閉じる
cv2.destroyAllWindows()
今までにpythonについて書いた記事はここにリンクを貼ってあります。
興味があればぜひご覧ください。