はじめに
前回はPythonを使って画像ファイルを読み込んで、表示する、ファイルとして保存するという流れを説明しました。 今回は動画を扱ってみたいと思います。今回もただ動画を読み込んで表示するといったことを説明します。
早速簡単に作ってみる
その前にライブラリをインストールします。MacOSX前提です。 今回はチャンネルとしてconda-forgeを指定します。バージョンさえ気にしな変えればどちらでもいいのかなと思います。今回は特に問題はなさそうです。
もしconda installで見つからない場合はこちらで探してみてください。
話を戻してインストールします。
$ conda install -c conda-forge opencv
うまく行ったら、コード書いてみます。 ファイル名は任意ですが、説明ではsamplevideo.pyで作ります。
import cv2 capture = cv2.VideoCapture('data/samplevideo.mp4') #(1) while True: #(2) ret, frame = capture.read() #(3) if ret: cv2.imshow('sample', frame) #(4) if cv2.waitKey(1) & 0xFF == ord('q'): #(5) break else: capture.set(cv2.CAP_PROP_POS_FRAMES, 0) #(6) cv2.destroyWindows(sample) #(7)
- (1)でmp4動画ファイル名を指定していますので、動画ファイルをsamplevideo.mp4という名前(にするか、(1)のファイル名を変更)として配置しておいてください。mp4形式であればOKです。
$ mkdir data
- (2)動画が静止画と違って、複数のフレームで構成されていますので、繰り返し処理を行うため、while文を使います。
- (3)readメソッドを使うことにより、フレーム画像が読み込めたかのboolean値と画像の配列ndarrayのタプルが返却されます。
- (4)sampleという名前でフレームを開きます。繰り返し行われるので、動画として見えます。
- (5)キーボードの入力を指定したミリ秒だけ待ち、ordでしたキーが押された場合(5)の分岐の処理(break)が行われます。
- (6)現在のフレームの位置を記録します。
- (7)はフレーム名を指定していますが、
cv2.destroyAllWindows()
で処理で開いたすべてのWindowを閉じることができます。
最後に
動画もまずはファイルを読み込んで、表示する流れができれば少しづつリッチにしていけば自分が実現したいアプリまで成長させることも可能です。
今後は画像と同様にkerasなどの処理技術を使ってよりリッチにさせていきたいと思います。
Sponsored Links
Sponsored Links