使用 Opencv 查找面部的姿势变化
Finding Pose variation of a face using Opencv
在图像中,有一张脸,它有点倾斜,姿势有轻微的变化。使用opencv,我检测了眼睛,鼻子和嘴巴的坐标。使用这4点是否可以将这张脸重新对齐成理想的正面脸?我尝试了透视变换,它确实适用于一些图像,但对于大多数照片给出了可怕的结果。有没有其他方法可以将图像重新对齐为理想的正面,而没有任何倾斜或姿势变化?
我认为
您可以参考Procrustes分析以获得更多帮助。这个想法是使用一组已知点找到从理想人脸到实际人脸的刚性转换矩阵。然后使用这个变换矩阵的逆数到实际人脸上的每个点,以获得理想的点。
在这里,您有一组已知点(两只眼睛,鼻尖和嘴巴)。您可以为他们假设一个理想的位置。从使用 OpenCV 的图像检测中,您可以获得 4 个相应的点。如果您可以假设只能进行旋转,您也可以参考 Kabsch 算法,我认为这在您的情况下可能是有意义的。这里有一个很好的问题来解释上述主题。我希望上面的参考资料对您有所帮助。
相关文章:
- C++取消引用指针.为什么会发生变化
- 为什么在读取文件大小时文件IO速度会发生变化
- 为什么cudaMemGetInfo报告设备内存总量的变化
- 如何避免LED在循环状态变化中闪烁?
- 当 I2C 值在C++中发生变化时收到通知
- Gtkmm 会不断检查 Gtk::日历上的所选日期是否发生变化
- 当我调用对象的方法时,对象的成员会发生变化
- 为什么向量内部的指针在从函数返回时会发生变化?
- 如何在 c++ 中循环中使用频率变化的声音?
- 为什么 C++ 中的零会发生变化
- 为什么我的全局变量似乎没有变化?
- 使用 IMFSinkWriter 编码的视频的播放速度会根据宽度而变化
- C++11:具有互斥锁的线程看到原子变量的值发生变化,尽管这是唯一可以改变它的代码
- 为什么预减量会导致奇怪的变化?
- MATLAB:跟踪imufilter对象中的状态变化
- 当父小部件大小发生变化时,如何更改子小部件的大小?
- 我正在将一个 std::string 传递给一个 boost 函数,该函数对该类型进行常量引用,但该值发生了变化
- c++问题:给一个变量赋值后,另一个变量发生了变化
- 为什么使用默认构造函数"{}"而不是"= default"存在性能变化?
- 使用 Opencv 查找面部的姿势变化