人脸检测识别(一)
工具:VS 2015 + Opencv 3.4.3
首先得包含opencv一些基本的头文件如<cv.h>等
打开摄像头截取图像,并进行人脸抠取
(直接进行人脸的resize()变成灰色 92*112像素 便于后边的人脸训练)
VideoCapture cap(0);//打开默认的摄像头
int i = 1;
if (!cap.isOpened())
{return ;}
Mat frame;
while (!stop){
cap.read(frame); // 或cap>>frame;
imshow("Video", frame);
String filename = format(m_file+"\\%d.jpg", i);
char key = waitKey(100);
switch (key){
case'p':
i++; //键盘上每按一次p,就拍一张照
imwrite(filename, frame); //写入图片
imshow("photo", frame); //展示照片
waitKey(800);
destroyWindow("photo");
break;
case't':{
CascadeClassifier ccf1; //创建脸部对象
ccf1.load(xmlPath); //导入opencv自带检测的文件
vector<Rect> faces;
Mat gray;
cvtColor(frame, gray, CV_BGR2GRAY);
equalizeHist(gray, gray);
ccf1.detectMultiScale(gray, faces, 1.1, 3, 0, Size(50, 50), Size(500, 500));
for (vector<Rect>::const_iterator iter = faces.begin(); iter != faces.end(); iter++){
rectangle(frame, *iter, Scalar(0, 0, 255), 2, 8); //画出脸部矩形}
Mat faceROI = gray(faces[0]);
Mat image1;
resize(faceROI, image1, Size(92, 112));
imshow("resize", image1);
imwrite(filename, image1);
cvWaitKey(200);
break;}
default:break;
}
}
可以将这个直接在win32 平台中显示也可以mfc ,甚至是网页中,opencv还是很强大的