红点 = 左眼中心 (L)、右眼中心 (R)、嘴中心 (M)
紫色线 = 线 LR
红线 = L 和 R 中点的水平线
黄线 = 垂直线在 M.x 处与 LR 相交
蓝线 = LM 和 RM
绿线 = L 和 R 的 X 坐标之间的距离
根据这些数据,是否可以确定人脸的偏航、俯仰和滚动?
到目前为止我只有滚动:
Roll = 左右眼的角度差
知道 L、R 和 M 都相对移动,应该可以计算 2D 空间中的偏航和俯仰吧?
我的第一个想法是偏航可以计算为 M 的 X 坐标相对于 LR 的 x 坐标的距离(绿线)的比率
有什么想法吗?
注意:我用的是opencv
最佳答案
有一个函数叫做 solvePnP它可以从相机坐标系计算物体的平移和旋转。你需要所述物体的3D模型,即物体上点的3D位置,并在图片上找到这些点。
关于c++ - 是否可以根据眼睛和嘴巴的位置确定面部的偏航、俯仰和滚动? (含图片),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15707122/