【Python/OpenCV】ドローン「Tello」をアニメ顔を追跡するよう飛行させる

Python/OpenCVで、ドローン「Tello」をアニメ顔を追跡するよう飛行させる方法についてまとめました。

アニメ顔を追跡するようドローン「Tello」を自律飛行

以下動画のような感じで、アニメ顔を追跡するようドローン「Tello」を自律飛行させてみます。

実行例

なお、PythonでTelloを遠隔操作する方法については以下ページで紹介しています(このページでは説明省略)。

【Python×Tello】ドローンを遠隔制御・自律飛行させて遊ぶ方法
Python言語でドローン「Tello」を遠隔制御したり自律飛行させて遊ぶ方法について入門者向けにまとめました。

OpenCVモジュールを用いてアニメ顔の検出方法については以下ページで紹介しています(このページでは説明省略)。

【Python版OpenCV】Haar Cascadeで顔検出、アニメ顔検出、顔にモザイク処理
Python+OpenCVでHaar Cascade識別器(分類器)を実装し、画像から顔検出、アニメ顔検出、顔にモザイク処理する方法をソースコード付きで解説します。

今回作成するプログラムの処理の流れは、以下のとおりです。

1 カメラ映像を取得する。jキーを押すとTelloが離陸する(離陸させないとアニメ顔を追跡するようTelloは飛行しない。
2 カメラ映像のフレーム中からアニメ顔の中心位置と範囲(矩形)を検出する(検出器にはカスケード型識別器を利用)。
3 アニメ顔の中心位置が、フレームの中心付近にくるように3.1〜3.6のようにTelloを動かし続けます。
3.1 アニメ顔の中心位置が、フレームの中心付から左にずれていれば左旋回する。
3.2 アニメ顔の中心位置が、フレームの中心から右にずれていれば右旋回する。
3.3 アニメ顔の中心位置が、フレームの中心から上にずれていれば下降する。
3.4 アニメ顔の中心位置が、フレームの中心から上にずれていれば上昇する。
3.5 アニメ顔の中心位置が、アニメ顔の範囲(矩形)が小さければ前進する。
3.6 アニメ顔の中心位置が、アニメ顔の範囲(矩形)が大きければ後進する。

アニメの顔を検出するために、有志が公開されている「lbpcascade_animeface.xml(https://github.com/nagadomi/lbpcascade_animeface)」を使います。
ダウンロードし、プログラム中でファイルのパスを指定してあげてください。


【Python/OpenCV】ドローン「Tello」をアニメ顔を追跡するよう飛行させる
Python/OpenCVで、ドローン「Tello」をアニメ顔を追跡するよう飛行させる方法についてまとめました。
【Python版OpenCV超入門】使い方とサンプルコードを解説
Python版OpenCVで画像処理プログラミングを行う方法を入門者向けにソースコード付きで解説するページです。
【Python超入門】使い方とサンプル集
Pythonの使い方について、基礎文法から応用例まで入門者向けに解説します。

コメント