我有超过2000个灰度图像,像素尺寸为96x96像素。我有(x,y)协调的面部关键点,如left_eye_center,right_eye_center,nose_center,mouth_left,mouth_right等。
数据集中的许多面都向左或向右或向上或向下倾斜。所以我想找出朝向相机的面部方向角度。
是否有任何库可以检测到这个?我看了一下opencv,但它似乎只做了面部检测而不是方向。
答案 0 :(得分: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;
[编辑:]
看来,你所寻找的实际上是“头部姿势估计”(或“假设”)你需要一个(原始的)3d头部模型,为你的地标获取相应的3d点,然后为每个图像找到图像中的2d地标,并从solvPnP()获得旋转/平移向量
答案 1 :(得分:0)
我将训练数据分成3个标签(左,中,右),然后将其与您选择的机器学习算法一起使用,以学习3个类。如果你正在使用opencv,你可以使用例如使用HaarCascadeClassifiers(我曾经有一个项目,我用它来分类方向)。但实际上,任何事都有效。您只需将其从二进制分类(面部检测)扩展到多类分类(面部方向)。