利用opencv进行面部和眼睛检测
来源:互联网 发布:数据自动生成图表 编辑:程序博客网 时间:2024/09/21 08:53
#include "opencv2/objdetect/objdetect.hpp"#include "opencv2/highgui/highgui.hpp"#include "opencv2/imgproc/imgproc.hpp"#include <iostream>#include <stdio.h>using namespace std;using namespace cv;/** Function Headers */void detectAndDisplay( Mat frame );/** Global variables *///-- Note, either copy these two files from opencv/data/haarscascades to your current folder, or change these locationsString face_cascade_name = "haarcascade_frontalface_alt.xml";String eyes_cascade_name = "haarcascade_eye_tree_eyeglasses.xml";CascadeClassifier face_cascade;CascadeClassifier eyes_cascade;string window_name = "Capture - Face detection";RNG rng(12345);/**
* @function main*/int main( void ){
VideoCapture capture;Mat frame;//-- 1. Load the cascadesif( !face_cascade.load( face_cascade_name ) ){ printf("--(!)Error loading\n"); return -1; };if( !eyes_cascade.load( eyes_cascade_name ) ){ printf("--(!)Error loading\n"); return -1; };//-- 2. Read the video streamcapture.open( /*-1*/0 );if( capture.isOpened() ){for(;;){capture >> frame;//-- 3. Apply the classifier to the frameif( !frame.empty() ){detectAndDisplay( frame );// imshow( window_name, frame );}else{ printf(" --(!) No captured frame -- Break!"); break; }int c = waitKey(10);if( (char)c == 'c' ) { break; }}}return 0;}
/**
* @function detectAndDisplay*/void detectAndDisplay( Mat frame ){
std::vector<Rect> faces;Mat frame_gray;cvtColor( frame, frame_gray, COLOR_BGR2GRAY );equalizeHist( frame_gray, frame_gray );//-- Detect facesface_cascade.detectMultiScale( frame_gray, faces, 1.1, 2, 0|CV_HAAR_SCALE_IMAGE, Size(30, 30) );for( size_t i = 0; i < faces.size(); i++ ){Point center( faces[i].x + faces[i].width/2, faces[i].y + faces[i].height/2 );ellipse( frame, center, Size( faces[i].width/2, faces[i].height/2), 0, 0, 360, Scalar( 255, 0, 255 ), 2, 8, 0 );Mat faceROI = frame_gray( faces[i] );std::vector<Rect> eyes;//-- In each face, detect eyeseyes_cascade.detectMultiScale( faceROI, eyes, 1.1, 2, 0 |CV_HAAR_SCALE_IMAGE, Size(30, 30) );for( size_t j = 0; j < eyes.size(); j++ ){Point eye_center( faces[i].x + eyes[j].x + eyes[j].width/2, faces[i].y + eyes[j].y + eyes[j].height/2 );int radius = cvRound( (eyes[j].width + eyes[j].height)*0.25 );circle( frame, eye_center, radius, Scalar( 255, 0, 0 ), 3, 8, 0 );}}//-- Show what you gotimshow( window_name, frame );}
1 0
- 利用opencv进行面部和眼睛检测
- OpenCV脸部、眼睛检测
- opencv+Recorder︱OpenCV 中使用 Haar 分类器进行面部检测
- 在OpenCV下利用霍夫变换进行直线检测和圆检测
- python-opencv眼睛检测,笑脸检测
- 利用opencv库函数检测人脸、眼睛以及鼻子等区域
- opencv实现人脸眼睛的检测
- 使用Haar分类器进行面部检测【转】
- Android平台上利用opencv进行图像的边沿检测
- Android平台上利用opencv进行图像的边沿检测
- 利用opencv自带detectpeople.cpp进行行人检测
- 【OpenCV】利用霍夫变换进行直线检测
- 题目:在Opencv中利用HOG进行行人检测
- 题目:Opencv中利用光流法对物体进行检测
- 利用Opencv中的Houghline方法进行直线检测---python语言
- 利用opencv进行图像文件读入和显示
- 利用matlab和opencv进行摄像头校正
- 利用OpenCV检测肤色
- 使用volatile类型发布不可变对象
- ecshop数据库表4(ecs_admin_log)管理 日志表
- Loadrunner11 录制手机App脚本多种方法介绍
- PHP对象和数组的相互转换
- 加法的实现-不用加减乘除运算
- 利用opencv进行面部和眼睛检测
- 有个人主页了,这里不再维护了
- 多线程中的使用共享变量的问题
- 进程间通信相关函数
- CentOS 6 安装Teamviewer
- Android——NDK笔记
- java优先级的一个细节
- lightoj 1085 树状数组+dp
- 1010. 一元多项式求导 (25)