Visual Studio 2017下使用OpenCV做的人脸识别
2017-06-07 14:55
417 查看
环境OpenCV3.2,Debug64
效果图:#include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace std; CascadeClassifier face_cascader; CascadeClassifier eye_cascader; //记得是/而不是\ //位置确定,在opencv中找到这两个文件, //haarcascade_frontalface_alt.xml //haarcascade_eye.xml //可以使用相对路径,可以使用绝对路径 String facefile = "D:/opencv/build/etc/haarcascades/haarcascade_frontalface_alt.xml"; String eyefile = "D:/opencv/build/etc/haarcascades/haarcascade_eye.xml"; int main(int argc, char** argv) { if (!face_cascader.load(facefile)) {//载入xml printf("could not load face feature data...\n"); return -1; } if (!eye_cascader.load(eyefile)) {//载入xml printf("could not load eye feature data...\n"); return -1; } //创建窗体 namedWindow("camera-demo", CV_WINDOW_AUTOSIZE); //打开摄像头 VideoCapture capture(0); Mat frame; Mat gray; vector<Rect> faces; vector<Rect> eyes; while (capture.read(frame)) {//实时检测 //去色 cvtColor(frame, gray, COLOR_BGR2GRAY); equalizeHist(gray, gray); face_cascader.detectMultiScale(gray, faces, 1.2, 3, 0, Size(30, 30)); for (size_t t = 0; t < faces.size(); t++) { Rect roi; roi.x = faces[static_cast<int>(t)].x; roi.y = faces[static_cast<int>(t)].y; roi.width = faces[static_cast<int>(t)].width; roi.height = faces[static_cast<int>(t)].height / 2; Mat faceROI = frame(roi); eye_cascader.detectMultiScale(faceROI, eyes, 1.2, 3, 0, Size(20, 20)); for (size_t k = 0; k < eyes.size(); k++) { Rect rect; rect.x = faces[static_cast<int>(t)].x + eyes[k].x; rect.y = faces[static_cast<int>(t)].y + eyes[k].y; rect.width = eyes[k].width; rect.height = eyes[k].height; //识别出眼眶 rectangle(frame, rect, Scalar(0, 255, 0), 2, 8, 0); Point center; center.x = rect.x + rect.width / 2; center.y = rect.y + rect.height / 2; //识别出瞳孔 circle(frame, center, 5, Scalar(0, 255, 255), -1, 8); } //识别出人脸 rectangle(frame, faces[static_cast<int>(t)], Scalar(0, 0, 255), 2, 8, 0); } //输出实时图像 imshow("camera-demo", frame); //等待键盘响应 char c = waitKey(30); if (c == 27) { break; } } waitKey(0); return 0; }
识别出瞳孔,眼眶,还有人脸。
相关文章推荐
- 使用OpenCV进行人脸识别的三种算法(官方网翻译)
- 怎样使用OpenCV进行人脸识别 [停止更新]
- [置顶] OpenCV中使用Eigenfaces 或 Fisherfaces进行人脸识别
- python使用opencv2人脸识别
- OpenCV 人脸识别使用 cvLoad()加载分类器报错的解决方法
- 怎样使用OpenCV进行人脸识别
- 怎样使用OpenCV进行人脸识别
- 【Android】Android使用OpenCV实现人脸识别(OpenCV+JavaCV)
- 怎样使用OpenCV进行人脸识别
- 使用Opencv实现IOS平台下的人脸识别
- 怎样使用OpenCV进行人脸识别
- 使用opencv进行人脸识别
- Java使用OpenCV进行人脸识别
- 【DragonBoard 410c 试用体验】opencv人脸识别基础使用
- 怎样使用OpenCV进行人脸识别 [停止更新]
- opencv使用,人脸识别,java使用opencv
- 怎样使用OpenCV进行人脸识别 [停止更新]
- OpenCV 使用FaceRecognizer类来进行人脸识别
- 使用OpenCV进行人脸识别的例子
- 使用OpenCV进行人脸识别的三种方法