我正在尝试确定视频中人脸的方向。
视频从脸部的正面图像开始,因此没有旋转。在以下帧中,头部旋转,我试图确定旋转,这将引导我根据相机位置确定面部方向。
我正在使用 OpenCV 和 C++ 来完成这项工作。我正在使用 SURF 描述符来查找脸上的点,我用这些点来计算两个图像之间的单应性。由于两帧彼此非常接近,因此在该间隔内头部旋转将最小,并且我的单应矩阵将接近单位矩阵。
这是我的单应矩阵:
H = findHomography(k1,k2,RANSAC,8);
其中 k1 和 k2 是使用 SURF 提取的关键点。
我正在使用decomposeProjectionMatrix来提取旋转矩阵,但现在我不确定如何解释 rotMatrix。这个也基本上是 (1 0 0; 0 1 0; 0 0 1) (其中 0 是从 e-10 到 e-16 范围内的数字)。
理论上,试图做的是找到每帧的旋转角度并将其存储在某个地方,这样如果我在每帧中得到 1° 的变化,在 10 帧之后我知道我的头已经改变了它的方向10°。
我花了一些时间阅读我能找到的关于 QR 分解、单应矩阵等的所有内容,但我无法解决这个问题。因此,任何帮助将不胜感激。
谢谢!