Pythonによるデータ分析・機械学習ブログ

Pythonによるデータの前処理・グラフ化、機械学習、統計解析、画像処理、Webスクレイピング、自然言語処理の基礎について紹介していきます。

MENU

【第15回】OpenCVを用いた動画表示と保存

はじめに

OpenCVとはインテルが開発・公開したオープンソースのコンピュータビジョン向けライブラリで、画像処理・画像解析および機械学習等の機能を持つC/C++JavaPythonMATLAB用ライブラリとなっています。

OpenCVには以下のような機能があります。

  • グレースケール化
  • 2値化
  • 輪郭の検出
  • 顔検出
  • ノイズ除去
  • テンプレートマッチング

OpenCVは上記などの画像処理だけではなく動画の表示や保存をすることができます。動画を取得して1フレームごとに画像処理を行うこともできます。例えば1フレームごとに人物検出を行い、検出された場合にはその部分に四角形を描画して新たな動画として保存することができます。さらには監視カメラなどの動画をRTSPで取得して表示することなどもできます。

本記事ではOpenCVを用いて基本的な動画表示と保存の方法を紹介していきます。

SAMURAI TERAKOYA

 

1. 動画の表示

動画の表示は以下のコードでできます。以下の例ではcv2.VideoCapture()の引数に0を指定することで内臓カメラの動画を読み込むことができます。while文の中でカメラ画像を1フレームずつ取得してそれを表示することで、動画として表示させています。

PC内の動画を表示させたい場合には以下のように、ビデオのファイルパスをcv2.VideoCapture()の引数に指定してください。

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

RTSPでストリーミング動画を取得するには、rtspリンクをcv2.VideoCapture()の引数に指定してください。ここではRTSP Stream for Testingで公開されているRTSPリンクを例にして記載します。

cap = cv2.VideoCapture(’rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mp4’)

 

2. 動画の情報の取得

元の動画から動画の幅(width)、高さ(height)、フレーム速度(fps)の条件を取得できます。それぞれ以下のように取得できます。

動画情報 コード
動画の幅 cap.get(cv2.CAP_PROP_FRAME_WIDTH)
動画の高さ cap.get(cv2.CAP_PROP_FRAME_HEIGHT)
動画のフレーム速度 cap.get(cv2.CAP_PROP_FPS)

 

それでは実際に取得してみましょう。以下の様に記載することで、動画の幅(width)、高さ(height)、フレーム速度(fps)の条件を取得できます。

 

3. 動画の保存

続いて読み込んだ動画を保存していきます。動画の保存にはcv2.VideoWriter()を以下の様に用います。

video = cv2.VideoWriter(filepath, codec, fps, (width, height))

引数は以下の様になります。。

引数 内容
filepath 出力時のファイルパス名
codec エンコード方式
fps フレーム速度
width フレーム幅
height フレーム高さ

 

それでは動画の保存コードを確認していきましょう。以下の例では元の画像のフレームサイズ、フレーム速度(fps)を保存時のフレームサイズ、フレーム速度とし、mp4の形式で動画を保存します。

 

3. 動画を読み込み後、画像処理して保存

最後に、動画に処理をして保存する例を示します。以下の例では内臓カメラの映像を読み込んで現在の時刻を描画し、画面に表示するとともにPCにビデオを保存します。

 

オススメ書籍

Pythonで始めるOpenCV4プログラミング

実践OpenCV4 for Python 画像映像情報処理と機械学習

 

スキル修得&転職

 近年、DXの進展に伴うデジタル人材の需要の高まりに追いついていない状況が続いていると経済産業省がホームページで記載している通り、DX人材、IT人材が不足しているのが現状です。さらにコンピュータの性能向上やAI技術の発展により、よりDX人材、IT人材の需要が高まってきます。さらには、今後の長期間安定して職がある業種とも考えられます。

以下の求人では、IT業界の転職や、IT未経験だけどIT人材を志望する就活を支援してくれます。無料で会員登録もできるので、まずは登録だけでもして様子を見てみてはいかがでしょうか?

▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼

▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲

 

おわりに

本記事ではOpenCVを用いて基本的な動画表示と保存の方法を紹介しました。画面に動画を表示したり、保存したり、画像処理後に表示&保存をする例を紹介しました。カメラ画像を用いた業務を行う人は頻繁に使用する内容になりますので、ぜひ覚えましょう。