小编Hai*_*ryS的帖子

如何将 2D 面部地标转换为 3D 世界坐标?

第一次在这里发帖,我会尽力描述问题。我正在尝试使用 opencv、dlib 和网络摄像头数据实时为 3D 虚拟角色的面部设置动画,类似于此软件等花哨的应用程序

遵循此处示例并使用网络摄像头,我可以获得屏幕空间中的实时 2D 面部标志数据以及头部姿势的 3D 平移数据的估计。但我真正想知道的是面部标志的估计 3D 世界坐标。例如,当头部向一侧倾斜 30 度时,嘴巴看起来就像演员用他/她的嘴发出“w”声一样。

谁能告诉我使用估计的头部姿势将这些 2d 面部标志转换为 3D 数据的策略是什么,或者这是否使这些实时面部动画应用程序如此昂贵?


std::vector<cv::Point3d> object_pts;
std::vector<cv::Point2d> image_pts;
std::vector<cv::Point3d> reprojectsrc;
std::vector<cv::Point2d> reprojectdst;
cv::Mat rotation_vec;
cv::Mat rotation_mat;
cv::Mat translation_vec;
cv::Mat pose_mat;
cv::Mat euler_angle;
cv::Mat cam_matrix;
cv::Mat dist_coeffs;
cv::Mat out_intrinsics;
cv::Mat out_rotation;
cv::Mat out_translation;

int UpdateFace(dlib::cv_image<dlib::bgr_pixel> cimg, dlib::rectangle face)
{
    // get facial landmarks
    shape = predictor(cimg, face);

    // draw facial landmarks
    for (unsigned int i = 0; i < 68; …
Run Code Online (Sandbox Code Playgroud)

opencv tracking dlib face

5
推荐指数
1
解决办法
1011
查看次数

标签 统计

dlib ×1

face ×1

opencv ×1

tracking ×1