【OpenCV学习笔记 014】人脸人眼识别
来源:互联网 发布:php小说源码 编辑:程序博客网 时间:2024/06/05 12:07
源码示例
#include "cv.h"#include "highgui.h"#include <assert.h>#include <iostream>using namespace std;int main(){double scale = 1.3;IplImage* img = cvLoadImage("gilrPicture.png");cvNamedWindow("结果图", CV_WINDOW_AUTOSIZE);IplImage* grayImg = cvCreateImage(cvGetSize(img), img->depth, 1);IplImage* smallImg = cvCreateImage(cvSize(cvRound(img->width / scale), cvRound(img->height / scale)), IPL_DEPTH_8U, 1);cvCvtColor(img, grayImg, CV_BGR2GRAY);cvResize(grayImg, smallImg, CV_INTER_LINEAR);cvEqualizeHist(smallImg, smallImg);//使灰度图像直方图均衡化。归一化图像亮度和增强对比度string eyeStr("eye");CvMemStorage* storagel = 0;storagel = cvCreateMemStorage(0);//创建内部存储器CvHaarClassifierCascade *cascade_f = NULL;const char* cascade_name1 = "D:\\opencv\\sources\\data\\haarcascades\\haarcascade_frontalface_alt2.xml";cascade_f = (CvHaarClassifierCascade*)cvLoad(cascade_name1, 0, 0, 0);assert(cascade_f != NULL);CvSeq *faces = cvHaarDetectObjects(grayImg, cascade_f, storagel, 1.1, 3, 8, cvSize(20, 20));for (int i = 0; i < (faces ? faces->total : 0); i++){CvRect *face = (CvRect*)cvGetSeqElem(faces, i);cvRectangle(grayImg, cvPoint(face->x, face->y), cvPoint(face->x + face->width, face->y + face->height), CV_RGB(255, 0, 0), 1, 4, 0);cvSetImageROI(grayImg, cvRect(face->x, face->y + (face->height / 5.5), face->width, face->height / 3.0));CvMemStorage* storage = 0;storage = cvCreateMemStorage(0);CvHaarClassifierCascade* cascade_e = 0;const char* cascade_name2 = "D:\\opencv\\sources\\data\\haarcascades\\haarcascade_eye.xml";cascade_e = (CvHaarClassifierCascade*)cvLoad(cascade_name2, 0, 0, 0);assert(cascade_e != NULL);//storage = cvCreateMemStorage(0) ;CvSeq *eyes = cvHaarDetectObjects(grayImg, cascade_e, storage, 1.1, 3, 3, cvSize(1, 1));int j;cout << eyes->total << endl;IplImage* temp = cvCreateImage(cvGetSize(grayImg), grayImg->depth, 1);cvCopyImage(grayImg, temp);CvSize dst_cvsize;dst_cvsize.width = 150;dst_cvsize.height = 150;for (j = 0; j < (eyes ? eyes->total : 0); j++){char char2[100];_itoa(j, char2, 10);//把数字转换成字符型eyeStr.append(char2);eyeStr.append(".jpg");CvRect *eye = (CvRect*)cvGetSeqElem(eyes, j);cvSetImageROI(temp, cvRect(eye->x, eye->y, eye->width, eye->height));//设置感兴趣区IplImage* dst = cvCreateImage(cvSize(eye->width, eye->height), IPL_DEPTH_8U, 1);IplImage* fixed_dst = cvCreateImage(dst_cvsize, IPL_DEPTH_8U, 1);cvCopy(temp, dst, 0);//temp是输入,dst是输出cvResetImageROI(temp);cvResize(dst, fixed_dst, CV_INTER_LINEAR);//图像缩放cvNamedWindow(eyeStr.c_str(), 1);cvShowImage(eyeStr.c_str(), fixed_dst);cvSaveImage(eyeStr.c_str(), fixed_dst);eyeStr.clear();eyeStr.append("eye");cvRectangle(grayImg, cvPoint(eye->x, eye->y), cvPoint(eye->x + eye->width, eye->y + eye->height), CV_RGB(255, 0, 0), 1, 4, 0);cvReleaseImage(&dst);cvReleaseImage(&fixed_dst);}cvResetImageROI(grayImg);}cvShowImage("结果图", grayImg);cvWaitKey(0);cvReleaseImage(&grayImg);cvDestroyWindow("结果图");return 0;}
运行结果
1 0
- 【OpenCV学习笔记 014】人脸人眼识别
- opencv学习笔记3-初探特征识别
- OpenCV学习笔记(五十五)——用OpenCV做人脸识别和性别识别contrib
- opencv学习-Cascade Classifier-人脸人眼识别
- OpenCV学习笔记(二十)——手势识别
- OpenCV学习笔记[3]Java Demo人脸识别
- OpenCV学习笔记(一):使用CascadeClassifier识别人脸
- 【OpenCV学习笔记 022】人脸识别 小试牛刀
- OpenCV学习笔记(29)人脸识别 练习
- OpenCV Python 学习笔记(五) 人脸识别
- [opencv学习笔记.2]用摄像头识别指定颜色
- opencv学习笔记(四)识别线段与圆形
- C# OpenCV学习笔记六之人脸识别/五官识别测试
- OpenCV学习笔记(五十九)——marker检测识别"Master OpenCV"chp.2
- opencv颜色识别学习总结
- opencv形状识别学习总结
- opencv 学习之 车牌识别
- opencv形状识别学习总结
- 电影里的人工智能离我们还有多远?
- 前端页面无法通过Servlet跳转
- hibernate部分
- 文件和流
- 专家谈信息安全:一上网,基本上等同于裸奔
- 【OpenCV学习笔记 014】人脸人眼识别
- [python]global与nonlocal关键字
- linux常用命令
- 常用集合【LinkedList 线程不安全】
- this指针
- 【CUDA开发】 CUDA Thrust 规约求和
- 精选30道Java笔试题解答
- 字符编码 ASCII/ UNICODE/ Multi-Byte (二)
- MATLAB GUI杂记