OpenCV Python

[python] opencvで動画トラッキングを簡単に実装してみた

概要

やれること :動画内の移動する物の位置をトラッキングできる
読者対象  :pythonの実行環境がある
必要時間  :30分程度
必要条件    :特になし

 

筆者のスキルレベル

python初めて2ヶ月程度。四則演算・List/辞書型等の基本機能は一通り。
最近は、Pandusやmatplotlibを少し使い始めている。

 

やりたいこと

動画内でトラッキングをやってみる。

お題例として、下記の映像の右の白い車をトラッキングしてみます。

この動画は下記の無料サイト様からダウンロードさせていただきました。

リンク

 

事前準備1

pythonにopencv-contrib-pythonのインストールをしておきます。
後でTrackerMedianFlow_createという関数も使いたいので、のopencv-pythonではなくopencv-contrib-pythonをインストールします。

 command
pip install opencv-contrib-python

 

次に動画の各フレームを静止画に変換します。このコードは下記のサイトを参考にさせてもらいました。

Python, OpenCVで動画ファイルからフレームを切り出して保存

このコードを実行させ、動画をフレームごとに静止画にしておきます。

 

事前準備2

トラッキング対象とする車を探します。
今回はトラッキング対象を四角形で囲み、次のフレームでどこに移動したかをトラッキングします。

まず、車の初期位置を探すために下記のコードを使いました。
下記のコードのx,y,w,hを変化させながらトラッキング対象を四角で囲うように調整します。

調整の結果、下記のように四角に対象となる車が収まるように調整ができました。

 

ソースコード

実行結果

初期位置

 

初期位置から車の軌道をトラッキングできました。

 

今回参考にしたサイト

pixabay フリー動画サイト(今回の映像を拝借)

Python, OpenCVで動画ファイルからフレームを切り出して保存

OpenCVのTrackerを使って動画内のオブジェクトをトラッキングする

-OpenCV, Python

© 2022 monz code Powered by AFFINGER5