Python : 動画の読み込み ループ再生

Pythonの動画読み込みをする際のループ再生をする場合です。

前回紹介した下記の記事から一部変更するだけです。

kangkang1981.hatenablog.com

 

変更する場所は、下から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について書いた記事はここにリンクを貼ってあります。

興味があればぜひご覧ください。