Python

【OpenCV】動画の表示と出力

ここでは、Python と OpenCV を使って、「動画の表示」「動画の出力」に関する方法についてまとめています。

参考

静止画(画像)の表示や保存については、「【OpenCV】画像の表示と保存」にまとめています。

 

OpenCV で動画を読み込む

OpenCV を使って動画を読み込むのは、とても簡単です。
標準APIである VideoCapture(<動画ファイルのパス>) を使って、次のように読み込みます。

  • 1~2行目:OpenCV を含む必要なライブラリをインポートしています
  • 4行目:OpenCV の API である VideoCapture() を使って動画を読み込みます
  • 5~6行目:動画を正しく読込めたかどうかを isOpened() を使って確認します
  • 7行目:read() を使って 1 フレームだけ読み込みます(ret は成功/失敗)
  • 8行目:読み込んだフレームの情報(高さ、幅、画素値)を出力します

参考

shape や画素値については、「画像処理の基礎知識」にまとめています。

 

OpenCV で動画を表示

OpenCV を使って読み込んだフレームを表示してみましょう。
imshow(<表示ウィンドウのタイトル名>, <読み込んだフレームの numpy 配列>) を使います。

  • 1~6行目は、前述と同じ
  • 7行目:Python の while ループを使って無限ループします
  • 8行目:read() を使って 1 フレームだけ読み込みます(ret は成功/失敗)
  • 9行目:戻り値 ret が False の場合、ループを中断します
  • 10行目:imshow() を使って読み込んだフレームを表示します
  • 11~12行目:waitKey(30) で 30ms の間キーの入力を待ちます
    ESCキー(27)が入力されると、ループを終了します
  • 14行目:release() を使って読み込んだ動画の情報を開放します
SANACHAN
SANACHAN
1フレームの表示を連続で行って動画に見せる処理になります。
読み込んだ動画のフレームレートは考慮されません

 

OpenCV で動画の出力

最後に、OpenCV を使って動画を出力してみましょう。
標準APIである VideoWriter_fourcc(<コーデック>) と、
VideoWriter(<出力パス>, <fourcc>, <フレームレート>, <幅, 高さ>) を使います。

  • 1~7行目は、前述と同じ
  • 8行目:読み出したフレームから、「高さ」と「幅」を取得します
  • 9行目:VideoWriter_fourcc() を使って、コーデックを指定します
  • 10行目:VideoWriter() を使って、動画を書き出すためのオブジェクトを生成します
  • 12~17行目:だいたい前述と同じです
    16行目で write() を使って読み出した1フレームを書き出します
SANACHAN
SANACHAN
フレームのデータは、画像と同じ配列を有しています。
つまり、Python と OpenCV を使うことで、静止画から動画を簡単に作成することができます。

 

こちらの記事もよく読まれています

  • この記事を書いた人
  • 最新記事
SANACHAN

SANACHAN

「生涯一エンジニア」を掲げ、大手グローバル企業でSE/PGとして8年勤め、キャリアアップ転職した現役のエンジニアです。世にあるメジャーな全プログラム言語(コボル除く)を自由に扱えます。一児の父。自分のため、家族のため、日々勉強してます。システムエンジニア、プログラミングに関する情報を蓄積している雑記帳です。

-Python
-,