gpt4 book ai didi

c++ - 使用 opencv C++ 的面部方向

转载 作者:搜寻专家 更新时间:2023-10-31 01:04:25 26 4
gpt4 key购买 nike

我目前正在研究人脸检测,然后是眼睛、嘴巴、 Nose 和其他面部特征。对于上述检测,我使用了haarcascade(正面、眼睛、右耳、左耳和嘴巴)。现在,如果脸部是正面且笔直的,一切都会完美无缺。但是,如果面部处于侧 View 或旋转,我不会得到好的结果。对于侧 View ,我使用了 lbscascade_profile.xml(它仅适用于面部右侧)。但是对于旋转的脸,我无法检测到脸。任何人都可以在上面的上下文中帮助我。我在这里添加我的代码以便更好地理解。P.S:在此先感谢并原谅我的幼稚问题(这可能是因为我对编程很陌生)。

void detectAndDisplay( Mat frame)
{


// create a vector array to store the face found
std::vector<Rect> faces;

Mat frame_gray;
bool mirror_image = false;
// convert the frame image into gray image file
cvtColor( frame, frame_gray, CV_BGR2GRAY);
//equalize the gray image file
equalizeHist( frame_gray, frame_gray);

//find the frontal faces and store them in vector array
face_cascade1.detectMultiScale(frame_gray,
faces,
1.1, 2,
0|CV_HAAR_SCALE_IMAGE|CV_HAAR_FIND_BIGGEST_OBJECT,
Size(40, 40),
Size(200, 200));

// find the right side face and store that in the face vector
if(!(faces.size()))
{
profileface_cascade.detectMultiScale( frame_gray,
faces,
1.2, 3,
0|CV_HAAR_SCALE_IMAGE|CV_HAAR_FIND_BIGGEST_OBJECT,
Size(40, 40),
Size(200, 200));
}

// find whether left face exist or not by flipping the frame and checking through lbsprofile
if(!faces.size())
{
cv::flip(frame_gray, frame_gray, 1);
profileface_cascade.detectMultiScale( frame_gray,
faces,
1.2, 3,
0|CV_HAAR_SCALE_IMAGE|CV_HAAR_FIND_BIGGEST_OBJECT,
Size(40, 40),
Size(200, 200));
mirror_image = true;
}

// if the frame is not flipped then the it could be directly drawn into frame
if(mirror_image and faces.size())
{
// flip the frame
cv::flip(frame_gray, frame_gray, 1);
}

if(faces.size())
{
//draw rectangle for the faces detected
rectangle(frame, faces[0], cvScalar(0, 255, 0, 0), 1, 8, 0);

}

// check whether any face is present in frame or not
else
image_not_found++;

imshow("Face Detection", frame);
}

最佳答案

Flandmark以后就是你的 friend 了!我最近经常使用它,事实证明它是头部姿势估计的成功工具,因此特别适用于检测“旋转”面部。它在角度范围内工作相当合理:倾斜(绕平行于图像宽度的轴旋转)从 -30 到 +30 度,平移(绕平行于图像高度的轴旋转)从 -45 到 +45 度。这也是一个强大的解决方案。

关于c++ - 使用 opencv C++ 的面部方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23991140/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com