LoginSignup
20
19

More than 5 years have passed since last update.

OpenCVのOptical Flowを包括的に試すサンプル

Last updated at Posted at 2016-05-06

HSV

(更新 2016.5.7) Raspberry Piをサポート
(更新 2016.9.22) 金出先生の綴りを修正 ⇒ ロボットに「目」を授けた男、金出武雄:Meet the Legend | WIRED.jp

はじめに

画像の動きを解析する手法の一つとして、Optical Flow | Wikipediaがあります。
これを使いたいときに、試しやすいサンプルをまとめてみました。

Optical Flow | Wikipediaのサンプルは、Web検索するといくつかあります。
特にOpenCVの記事や、付属しているサンプルなどが分かりやすいです。

また特にこちら、原理的にすごく参考になりますし、

そこからのリンク先の下記解説がすごく分かりやすくて、どう応用していくか、考えを進めてくれます。

いくつか試したので、その「まとめ」として、Webcamの映像をOpenCVに入力したときの動きを包括的に確認できるものにしてみました。
(サンプルが断片的に散らばっていることもあり)

Githubに置きました

こちらに置きました。cloneして、

$ git clone https://github.com/daisukelab/cv_opt_flow.git
$ cd cv_opt_flow

main.pyを実行すると試すことができます(※要カメラ、ノートPC内蔵など)。
※ Raspberry Piでは、raspi_main.pyを実行して下さい。

$ python main.py
Hit followings to switch to:
1 - Dense optical flow by HSV color image (default);
2 - Dense optical flow by lines;
3 - Dense optical flow by warped image;
4 - Lucas-Kanade method.

Hit 's' to save image.

Hit 'f' to flip image horizontally.

Hit ESC to exit.
(previewウインドウが開き、そこに解析結果をリアルタイムで表示)

コードもやや整理して

OpticalFlowShowcase.pyに、それぞれの表示を分けてクラス化してあります。

Class diagram

サンプル

手を左右にゆっくり振った時のサンプルです。

  • Gunnar-Farneback method: By HSV

HSV HSV SRC

  • Gunnar-Farneback method: By lines

LINES LINES SRC

  • Gunnar-Farneback method: By warping

WARP WARP SRC

  • Lucas-Kanade method

Lucas-Kanade

20
19
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
19