今のところ特定のカメラは考えていませんが、これがプログラム的に/数学的にどのように行われるのか興味があります。
私は3Dスペース、長方形を持ち、1つの角にカメラを上に向けて内向きに見ています。
現在の位置の(x、y、z)座標を送信する長方形に移動オブジェクトがあります。
それらの座標を取得して、カメラにその位置を指すように指示する命令に変換したいと思います。
この翻訳は通常どのように行われますか?
今のところ特定のカメラは考えていませんが、これがプログラム的に/数学的にどのように行われるのか興味があります。
私は3Dスペース、長方形を持ち、1つの角にカメラを上に向けて内向きに見ています。
現在の位置の(x、y、z)座標を送信する長方形に移動オブジェクトがあります。
それらの座標を取得して、カメラにその位置を指すように指示する命令に変換したいと思います。
この翻訳は通常どのように行われますか?
回答:
私のカメラはDLink 5020-Lで、APIを介して指定できるpan / tiltコマンドがあります。また、設定する位置が事前定義されており、APIを介してトリガーすることもできます
Position 1
Position 1
カメラの配置方法によっては、以前の結果を無効にする場合があります
(時間があれば、回路図を追加します)
すばらしい答えはすでにあります。考慮すべき他のことをいくつか追加したいと思います。hardlibとGoufaliteがすでに述べたように、これを行う方法は三角法です。カメラとIoTオブジェクトの2次元の描写を引き出しました。
ご覧のとおり、カメラの視野はオブジェクトよりも大きくなります。近距離でない場合、オブジェクトが遠ざかると、カメラの視野が大きくなります。
さて、あなたはありカメラが常にオブジェクトを中心にしたいです。その場合、hardlibが参照した計算を単純に実行できます。
ϴ = arctan(y/x)
...慣例により、x軸から反時計回りの角度になります。レベルから離れた角度も必要です。
α = arctan(z / ((y^2+x^2)^1/2))
明らかに、3つの軸すべての原点にあるカメラ位置に基づいて計算する必要があります。
一方、カメラを必要以上に動かさないようにしたい場合があります。つまり、オブジェクトがフレームの外に移動しようとしているように見える場合にのみカメラを動かします。その場合、おそらくオブジェクトがフレームの端にどれだけ近いかに基づいてカメラがその角度を変更する可能性が高くなる「圧力」変数が必要になります。
そのルートをたどる場合は、両方の視野でカメラの視野の角度を知っている必要があります。これにより、オブジェクトがカメラの視野と比較される場所を決定できます。