はじめに
こんにちは.
はんぺんです.
今回は,動画から画像を抽出して保存する方法を説明しようと思います.
今回はテニスの動画の分析に用いたmp4のものを用いました.
拡張子のところ変えれば多分他の拡張しでもできるはず.
動作環境は以下のとおりです.
- Ubuntu 16.04
- Anaconda3
- Python 3.5
動画→画像変換
ライブラリのインポート
1 2 |
import os import cv2 |
1つ目のimport osではosモジュールをインポートし,オペレーティングシステムと対話するための多くの関数が使えるようになります.
今回は,フォルダを参照してファイル名を取得するのにこのosモジュールを使用しました.
10. 標準ライブラリミニツアー — Python 3.6.3 ドキュメント
2つ目のimport cv2によって,openCVが使えるようになります.
これによって,画像や動画を読み込むこんだり,フレームレートやサイズを取得したりすることができるようになります.
>OpenCV(正式名称: Open Source Computer Vision Library)は、オープンソースのコンピューター・ビジョン・ライブラリです。コンピューターで画像や動画を処理するのに必要な、さまざま機能が実装されており、BSDライセンスで配布されていることから学術用途だけでなく商用目的でも利用できます。加えて、マルチプラットフォーム対応されているため、幅広い場面で利用されていることが特徴です。
動画の情報
1 2 |
movie_name = 'tennis_006' movie = './movie/'+movie_name+'.mp4' |
プログラムがある階層にmovieというフォルダを作り,その中に動画(mp4)を置いていれば上記のように記載すれば取得できます.
画像生成
1 2 3 4 5 6 7 8 9 10 |
count = 0 cap = cv2.VideoCapture(movie) while True: ret, frame = cap.read() if ret == True: count += 1 cv2.imwrite('./image/sample_image/' + movie_name + '_' + str("{0:05d}".format(count)) +'.jpg', frame) else: break |
動画から画像を取得しけ,取得が失敗するまで保存を続けるというコードです.
保存名の重複を避けるために,保存名指定のところでcount数を入れました.
また,今回は00001のように5桁で記載しました.このように「0」を入れておかないと,たとえば10枚の画像を保存した時に1,10,2,3,4,5,6…という並びになって後から整理がしにくくなってしまします.
これを防ぐためにも,画像名には0を入れておきましょう.
まとめ
いかがでしたでしょうか.
今回は,動画から画像を抽出して保存する方法を説明いたしました.
Pythonはこういった動画や画像を用いる能力に長けているので,画像処理には欠かせません.
画像の分析と合わせて動画生成を行うことで,できることの幅が広がって楽しそうですね!
それでは失礼いたします.
参考
10. 標準ライブラリミニツアー — Python 3.6.3 ドキュメント
コメントを残す