人脸检测(opencv)
2016-07-22 11:23
387 查看
乍看人脸识别感觉很复杂,但是我们站在巨人的肩旁上,这些难题都迎刃而解,虽然实现和效果都很简单,在opencv中自带了很多的分类器和检测函数,分类器在(安装位置)\opencv\sources\data\haarcascades,当然也可以自己训练
步骤:
1:加载分类器;
2:调用检测函数detectMultiScale();
3:画出相关人脸区域;
代码实现:
效果显示:
步骤:
1:加载分类器;
2:调用检测函数detectMultiScale();
3:画出相关人脸区域;
代码实现:
#include<opencv2\opencv.hpp> #include <iostream> using namespace std; using namespace cv; string face_cascade_name = "D:\\Opencv\\opencv\\sources\\data\\haarcascades\\haarcascade_frontalface_alt.xml"; CascadeClassifier face_cascade; string window_name = "人脸识别"; void detectAndDisplay(Mat frame); int main(int argc, char** argv){ Mat image=imread("1.png"); if (!image.data){ printf("[error] 没有图片\n"); return -1; } if (!face_cascade.load(face_cascade_name)){ printf("[error] 无法加载级联分类器文件!\n"); return -1; } detectAndDisplay(image); waitKey(0); } void detectAndDisplay(Mat frame){ vector<Rect> faces; Mat frame_gray; cvtColor(frame, frame_gray, CV_BGR2GRAY); equalizeHist(frame_gray, frame_gray); face_cascade.detectMultiScale(frame_gray, faces, 1.1, 6, 0 | CV_HAAR_SCALE_IMAGE, Size(30, 30)); for (int i = 0; i < faces.size(); i++){ Point center(faces[i].x + faces[i].width*0.5, faces[i].y + faces[i].height*0.5); ellipse(frame, center, Size(faces[i].width*0.5, faces[i].height*0.5), 0, 0, 360, Scalar(255, 0, 255), 4, 8, 0); cout << "faces"<<faces.at(i)<<endl; } imshow(window_name, frame); }
效果显示:
相关文章推荐
- python中使用OpenCV进行人脸检测的例子
- opencv 做人脸识别 opencv 人脸匹配分析
- 使用opencv拉伸图像扩大分辨率示例
- Android Studio中配置OpenCV库开发环境的教程
- 基于C++实现kinect+opencv 获取深度及彩色数据
- visual studio 2012安装配置方法图文教程 附opencv配置教程
- OpenCV 2.4.3 C++ 平滑处理分析
- Python中使用OpenCV库来进行简单的气象学遥感影像计算
- 利用Python和OpenCV库将URL转换为OpenCV格式的方法
- python结合opencv实现人脸检测与跟踪
- Python环境搭建之OpenCV的步骤方法
- Python+Opencv识别两张相似图片
- Python实现OpenCV的安装与使用示例
- 在树莓派2或树莓派B+上安装Python和OpenCV的教程
- opencv-python学习一--人脸检测
- 在Ubuntu上安装OpenCV3.0和Python-openCV的经历
- 使用 Java 开发 OpenCV 应用
- OpenCV配置,从来没有这么简单!
- ubuntu下opencv和qt的安装配置
- visual studio 2012安装配置方法图文教程 附opencv配置教程