/ /顔の角度を検出する方法は? - opencv、numpy、機械学習

どのように顔の角度を検出するには? - opencv、numpy、機械学習

私は96x96の2000以上のグレースケール画像を持っていますnumpyのピクセルサイズ。私は(x、y)left_eye_center、right_eye_center、nose_center、mouth_left、mouth_rightなどの顔のキーポイントを調整しています。

データセット内の多くの面が左右または上下に傾いています。だから私はカメラに向かって顔の向きの角度を探したいと思います。

これを検出するライブラリはありますか?私はopencvを調べましたが、それは顔の検出だけではなく向きをするようです。

回答:

回答№1は1

cmon、それは単なる平易な数学です:

    double eyeXdis = eye_r.x - eye_l.x;
double eyeYdis = eye_r.y - eye_l.y;
double angle   = atan(eyeYdis/eyeXdis);
double degree  = angle*180/CV_PI;

[編集:]

あなたが探しているのは実際には「頭の姿勢の推定」(または「posit」)です

あなたは、(原始的な)3dヘッドモデルが必要になるでしょう。あなたのランドマークの対応する3d点を一度、そして各画像について、画像中の2dのランドマークを見つけて、solvPnP()から回転/平行移動ベクトルを取得します。


回答№2の場合は0

私はトレーニングデータを3つのラベルに分割しました(左、センター、右)、3つのクラスを学習するために選択したマシン学習アルゴリズムで使用します。 opencvを使用している場合は、HaarCascadeClassifiersを使用することができます(私はこれまで、向きを分類するためにプロジェクトを使用していましたが)実際には何かが機能します。オリエンテーション)。