初期設定
画角を設定
計算を行う前に最初にScfpcSetAngleOfViewを実行して画角を設定します。
これはループ前に1度設定すれば十分です。
ScfpcSetAngleOfView int p_CameraID, double p_csp_Angle_Of_View_rad
[IN] p_CameraID = 0~(0) : カメラID
[IN] p_rad_Angle_Of_View = 0~(0) : カメラの画角[rad]
カメラID
設定した情報をモジュール内で保存していますので、これを管理するためのID番号です。
数字はユーザーが決めてください。よくわからなければ0を入れておいてください。0番の領域に設定が保存されます。
画角
画角とはここではカメラが撮影することができる角度範囲の事です。
右の図で言えば、45度や78度と書いてある部分が画角です。
画角が広いカメラなら広い範囲が撮影できますがそのぶん被写体が小さく映ります。
逆に画角が狭いカメラなら狭い範囲しかカメラに収まりませんが、被写体は大きく映ります。
右の図で言えば、78度のほうが45度より画角が広く、45度のほうは79度より画角が狭いということになります。
普通のwebカメラは望遠できないので画角は固定です。カメラごとに値が決まっていると考えていいと思います。
画角はおおよそ45度~75度程度のものが一般的なようです。
普通の人は自分が使っているカメラの画角が何度なのか知らないと思いますので
型番からメーカーサイトで調べるか、カメラ映像と分度器で自分で調べる必要があります。
あー、面倒ですねー。
精度があまり必要ないのであれば60度ぐらいで固定してしまうのもいいかもしれません。
ちなみに私はメーカーサイトでわからなかったので、定規2本と分度器で調べました。
・まずカメラを机の上に垂直に置く。
・定規の一端をカメラレンズ側に向け、八の字に置く。
・カメラ映像を見ながら定規の位置を微調整。定規が映像に映るか映らないか程度の位置になるよう調整する。
・うまくできえば映像の画面左右に定規は垂直に写る。このとき2本定規のなす角が画角です。
・カメラをどけて2本の定規の角度を分度器で調べる。
書きだしてみると面倒そうですね。なんとかならんかな。
カメラ映像の解像度を設定
カメラが取得した映像の解像度を設定します。
これはループ前に1度設定すれば十分です。
ScfpcSetSizeOfCamera int p_CameraID, double p_cpl_ViewArea_Width, double p_cpl_ViewArea_Height
[IN] p_CameraID = 0~(0) : カメラID
[IN] p_cpl_ViewArea_Width_px = 0~(640) : カメラ画像の幅[px]
[IN] p_cpl_ViewArea_Height_px = 0~(480) : カメラ画像の高さ[px]
カメラID
ScfpcSetAngleOfViewで指定したものと同じものです。
よくわからなければ0を指定してください。
カメラ画像の幅・高さ
カメラが取得した映像の解像度とは言っても正確には顔認識処理に渡す画像の解像度です。
通常は拡大や縮小しないと思うのでこのような書き方をしています。
ちなみにHSPCVの顔認識命令cvfacedetectはスケール値を指定するとその値で映像を縮小して高速化を行なっています。
また映像も内部でモノクロ化して高速化が図られているようです。
このため縮小したりモノクロ化したりしてからcvfacedetectを実行しても早くなりません。むしろ前処理した分だけ遅くなります。