Python : 動画の読み込み

Pythonの動画の読み込み方法です。

動画の保存方法については、下記のとおりです。

kangkang1981.hatenablog.com

 

今回は、上で制作した、movie.mp4という動画ファイルを読み込む方法です。

今回もOpencvを使うので、cv2を読み込みます。

import cv2

 

動画のアドレスを指定します。

cap = cv2.VideoCapture('movie.mp4')

動画を読み込む際はどのフレームから読み込むか?というのが指定できるので、

この指定をします。0だと最初からです。

もし最初からしか見ない場合は下記の2行は不要です。

nini_start = 0
cap.set(cv2.CAP_PROP_POS_FRAMES,nini_start)

 

後は、while文にてループを組み

while True:
動画を読み込みます、frame1という名前にします。

読み込みかたは、カメラと一緒で指定した画像データ.read()です。
ret,frame1 = cap.read()

この辺のやり方は結構好みの部分もありますが、

if文で画像が存在するかどうかを見るやり方です。
if ret:
30msec待つ;これを入れないと早すぎて見れないです。

この待つ文は、if文でqを押したら終了にするため、

画像を表示する前に入れるほうが、qを押したときの反応が良いです。
cv2.waitKey(30)
画像の表示
cv2.imshow('frame1',frame1)

上で説明した「q」を押したら終了これは

基本画像を表示したすぐ後に入れておくと反応がよいです。
key = cv2.waitKey(1)
if key & 0x00FF == ord('q'):
   break

動画が終了したら、whileループを抜けるようにしておきます。

この方法でなくてもよいですが、ループを抜けられるようにしておかないと、

だんまりになってしまいます。
else:
  break

最後に画像をすべて閉じます。
cv2.destroyAllWindows()

 

詳細のプログラムは下記になります。

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:
        break
    
#画像をすべて閉じる
cv2.destroyAllWindows()

 

今までにpythonについて書いた記事はここにリンクを貼ってあります。

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