gpt4 book ai didi

c++ - 我们如何更准确地检测人脸

转载 作者:太空宇宙 更新时间:2023-11-04 13:54:29 25 4
gpt4 key购买 nike

我正在从视频中进行人脸检测。所以我写了一个小代码来检测人脸。

#include<opencv2/objdetect/objdetect.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
#include <iostream>
#include <stdio.h>
#include<cv.h>

using namespace std;
using namespace cv;

CvCapture *capture=cvCaptureFromFile("foot.mp4");
double min_face_size=30;
double max_face_size=400;

Mat detectFace(Mat src);

int main( )
{
namedWindow( "window1", 1 );
while(1)
{
Mat frame,frame1;
frame1=cvQueryFrame(capture);;
frame=detectFace(frame1);
imshow( "window1", frame );
if(waitKey(1) == 'c') break;
}

waitKey(0);
return 0;
}

Mat detectFace(Mat image)
{
CascadeClassifier face_cascade( "haarcascade_frontalface_alt2.xml" );
CvPoint ul,lr;
std::vector<Rect> faces;
face_cascade.detectMultiScale( image, faces, 1.1, 2, 0|CV_HAAR_SCALE_IMAGE, Size(min_face_size, min_face_size),Size(max_face_size, max_face_size) );
for( int i = 0; i < faces.size(); i++ )
{
min_face_size = faces[i].width*0.8;
max_face_size = faces[i].width*1.2;
ul.x=faces[i].x;
ul.y=faces[i].y;
lr.x=faces[i].x + faces[i].width;
lr.y=faces[i].y + faces[i].height;
rectangle(image,ul,lr,CV_RGB(1,255,0),3,8,0);
}
return image;
}

我拍摄了一段用于人脸检测的视频,其中包含大小人脸。我的问题是使用我的代码,它只检测到小脸,而且还显示一些不需要的检测。

我需要检测视频中的小脸和大脸。我该怎么做?比例因子有问题吗?

请帮助我理解这个问题。

最佳答案

  1. 尝试增加“double max_face_size”,它控制您想要检测的人脸大小。

  2. 您还可以在控制人脸质量的“detectMultiScale()”参数中增加“2”。

关于c++ - 我们如何更准确地检测人脸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22109961/

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