简单opencv人脸检测代码:LBP/Haar特征
来源:互联网 发布:一维数组排序算法 php 编辑:程序博客网 时间:2024/05/29 08:05
前言
目前网络上有太多opencv人脸检测代码,但大部分都是用老的1.0接口,代码存在太多冗余(各种内存分配...看着太不舒服了,话说还有人用1.x版本的opencv吗- -),而实际上用2.0以上版本实现人脸检测功能是可以比较简洁的。(官方也早有相关示例)
人脸检测代码
haar与lbp的训练结果已有现成的,在opencv安装目录的data文件夹中。(把这两个文件复制到工程目录下)
lbp比haar快非常多,识别率没去仔细评估过。
废话不多扯,上代码。(备注:这是个基于对话框的工程,就长这样)
#define HAAR_CASCADE_FRONT_FACE_PATH "haarcascade_frontalface_default.xml"//front face haar特征方法 #define LBP_CASCADE_FRONT_FACE_PATH "lbpcascade_frontalface.xml"//front face LBP特征方法 bool CfaceDlg::DetectFace( Mat& src,vector<Rect>& faceRect){static cv::CascadeClassifier face_Classifier;static cv::Mat src_gray;cv::cvtColor( src, src_gray, CV_BGR2GRAY );//灰度化cv::equalizeHist( src_gray, src_gray );//直方图均衡,增加对比度以提高识别率//loadif (face_Classifier.empty())//check if load{if(false == face_Classifier.load(LBP_CASCADE_FRONT_FACE_PATH))return false;}faceRect.clear();//detectface_Classifier.detectMultiScale( src_gray, faceRect, 1.1, 2, 0|CV_HAAR_SCALE_IMAGE, cv::Size(30, 30) );if(faceRect.size() == 0)return false;return true;}
图片与视频加载代码
遇到非常多新手,读个图片/视频都要折腾半天,这里直接贴上吧。
加两个button,图片button代码:
void CfaceDlg::OnBnClickedButtonPic(){// TODO: 在此添加控件通知处理程序代码CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,_T("All Files(*.*)|*.*|Image File(*.jpg)|*.jpg||"),NULL);if(IDOK == dlg.DoModal()){USES_CONVERSION;string pic_path = W2A((LPCTSTR)dlg.GetPathName());Mat src = imread(pic_path);if(src.empty()) return;vector<Rect> faceRect;namedWindow("face",1);if(DetectFace(src,faceRect))//进行人脸识别{for (size_t faceIdx = 0;faceIdx < faceRect.size();faceIdx++)//画人脸{cv::rectangle(src,faceRect[faceIdx],cv::Scalar(10,220,240));}}imshow("face", src);waitKey();}}
视频button代码:
void CfaceDlg::OnBnClickedButtonCamera(){// TODO: 在此添加控件通知处理程序代码VideoCapture cap(0); // open the default cameraif(!cap.isOpened()) // check if we succeededreturn ;Mat src;namedWindow("face",1);for(;;){vector<Rect> faceRect;cap >> src; // get a new frame from cameraif(DetectFace(src,faceRect)){for (size_t faceIdx = 0;faceIdx < faceRect.size();faceIdx++){cv::rectangle(src,faceRect[faceIdx],cv::Scalar(10,220,240));}}imshow("face", src);if(waitKey(30) >= 0) break;}// the camera will be deinitialized automatically in VideoCapture destructorcv::destroyWindow("face");return ;}
0 0
- 简单opencv人脸检测代码:LBP/Haar特征
- 初学opencv/haar特征人脸检测
- OpenCV学习笔记:基于Haar特征的人脸检测
- OpenCV中Haar-like特征人脸检测函数介绍
- 【OpenCV之Haar特征检测人脸识别】
- 人脸检测特征-LBP特征
- 【人脸检测】OpenCV中的Haar+Adaboost级联分类器分解(一):Haar特征介绍
- 人脸检测特征-haar特征
- 行人检测全局特征中的HOG、LBP、Haar特征整理
- opencv 利用类haar小波特征的人脸、人眼等特征检测(带代码)
- 【OpenCV学习笔记】3:OpenCV自带的Haar特征人脸检测
- 【人脸检测:Haar】计算Haar特征个数(一)
- Haar-like特征人脸检测
- Haar-like特征人脸检测
- Haar特征检测 - 人脸识别
- opencv训练分类器(HAAR,LBP等特征)
- 人脸检测原理及示例(OpenCV+Python) haar特征 adaboost
- 人脸检测——OpenCV的分类器的haar特征数据
- Python __call__
- HTML Forms & Form element
- 同源策略以及cookie安全策略
- HTML笔记——背景&颜色
- 在使用了Maven后出现了There is no Action mapped for namespace [/] and action name [*] associated with context
- 简单opencv人脸检测代码:LBP/Haar特征
- 仿SlidingMenu
- [PB]-大文本(Blob)对象处理
- VB6.0工具的使用
- cin用法介绍
- php解析网页并将数据添加到数据库
- Django 学习笔记2 模板
- Dll高级功能
- CSS 表单文本框尺寸调整和文本框与按钮对齐问题