19,468
社区成员
发帖
与我相关
我的任务
分享
#include<opencv2/opencv.hpp>
#include<iostream>
using namespace std;
using namespace cv;
int main(){
VideoCapture cap(0); //打开默认摄像头
if(!cap.isOpened()){
return -1;
}
Mat frame;
Mat edges;
Mat gray;
CascadeClassifier cascade;
bool stop =false;
cascade.load("haarcascade_frontalface_alt.xml");
Ptr<FaceRecognizer>modelPCA = createEigenFaceRecognizer();
modelPCA->load("MyFacePCAModel.xml");
while(!stop)
{
cap>>frame;
vector<Rect> faces(0);
cvtColor(frame,gray,CV_BGR2GRAY);
equalizeHist(gray,gray);//直方图均值化
cascade.detectMultiScale(gray,faces,1.1,2,0|CV_HAAR_SCALE_IMAGE,Size(30,30));
Mat face;
Point text_lb;
for(size_t i=0;i<faces.size();i++)
{
if(faces[i].height>0&&faces[i].width>0)
{
face=gray(faces[i]);
text_lb=Point(faces[i].x,faces[i].y);
rectangle(frame,faces[i],Scalar(255,0,0),1,8,0);
}
}
Mat face_test;
int predictPCA=0;
if(face.rows>=120)
{
resize(face,face_test,Size(92,112));
}
if(!face_test.empty())
{
predictPCA=modelPCA->predict(face_test);
}
cout<<predictPCA<<endl;
if(predictPCA==35)
{
string name="shijunye";
putText(frame,name,text_lb,FONT_HERSHEY_COMPLEX,1,Scalar(0,0,255));
}
imshow("face",frame);
if(waitKey(50)>=0)
stop=true;
}
return 0;
}