(更新 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に、それぞれの表示を分けてクラス化してあります。
サンプル
手を左右にゆっくり振った時のサンプルです。
- Gunnar-Farneback method: By HSV
- Gunnar-Farneback method: By lines
- Gunnar-Farneback method: By warping
- Lucas-Kanade method