【问题标题】:face alignment for face recognition用于人脸识别的人脸对齐
【发布时间】:2015-10-13 16:39:04
【问题描述】:

我在使用 opencv 对齐人脸时遇到问题。 我检测到面部,然后使用地标并计算旋转角度。我用这个函数来旋转图像:

cv::Mat rotate(cv::Mat src, double angle)
{
    cv::Mat dst;
    cv::Point2f pt(src.cols/2., src.rows/2.);
    cv::Mat r = getRotationMatrix2D(pt, angle, 1.0);
    cv::warpAffine(src, dst, r, cv::Size(src.cols, src.rows));
    return dst;
}

我想找到旋转后眼睛的新位置,以根据眼睛中心裁剪面部。

【问题讨论】:

  • 您是在对齐之前执行眼睛检测并在旋转后找到相应的区域,还是只在旋转后执行眼睛检测?
  • 我检测到眼睛然后根据眼睛位置旋转...之后我想找到眼睛的新位置来裁剪脸部

标签: c++ opencv math face-detection face-recognition


【解决方案1】:

要围绕另一个点 (p,q) 旋转点 (x,y)(逆时针旋转角度 θ),您需要使用:

x′ = (x−p)cos(θ)−(y−q)sin(θ)+p,
y′ = (x−p)sin(θ)+(y−q)cos(θ)+q.

其中 x',y' 是旋转后的坐标。 如果您围绕中心旋转,则 (p,q) 是图像的中心。 详细解释可以在这里找到:https://math.stackexchange.com/questions/270194/how-to-find-the-vertices-angle-after-rotation

因此,如果您将眼睛分割为某些区域,则需要对检测为眼睛的区域中的每个像素执行该操作。

【讨论】:

    猜你喜欢
    • 2011-12-14
    • 1970-01-01
    • 2014-09-20
    • 1970-01-01
    • 2018-06-14
    • 2022-06-24
    • 1970-01-01
    • 2018-06-28
    • 2023-03-06
    相关资源
    最近更新 更多