成果物
www.youtube.com
今回は、カメラで顔認識をする事によって視点を求めるHead Trackingを使って立体映像を映してみました。画面自体は2Dなのですが、動いて見えることでかなり立体に見えるようになります。
コード
OpenCVのライブラリを利用しています。
仕組み
ベースにしたのはこのサイトですが、近似的に求めているようだったので、私なりに正確な計算方法を考えてみました。atan2や極座標の考え方を使っています。
https://discourse.processing.org/t/headtracking-negative-space/4620
FOV(視野角)が60°だとすると、ピクセル単位での奥行はカメラの幅*√3、それをもとに、atan2(顔の位置の中心からの差のx成分,カメラの幅*√3)をするとx方向の角度がわかります。同様にy方向の角度も求めます。映った顔のサイズから距離を、定数(任意)/サイズという式で求めます。ここでわかった3つの数値(極座標)をもとに、デカルト座標を求めます。そしてカメラをその位置に設定します。