人脸识别
来源:互联网 发布:project软件购买 编辑:程序博客网 时间:2024/06/02 07:32
作者 群号 C语言交流中心 240137450 微信 15013593099
// 人脸识别.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include "cv.h"#include "highgui.h"#include <stdio.h>static CvHaarClassifierCascade* cascade = 0;static CvMemStorage* storage = 0;void detect_and_draw( IplImage* image );const char* cascade_name ="haarcascade_frontalface_alt.xml"; //人脸检测要用到的分类器int main(int argc, char* argv[]){ cascade = (CvHaarClassifierCascade*)cvLoad( cascade_name, 0, 0, 0 ); //加载人脸检测所用的分类器 if( !cascade ) { fprintf( stderr, "ERROR: Could not load classifier cascade\n" ); return -1; } storage = cvCreateMemStorage(0); //动态存储结构,用来存储人脸在图像中的位置 cvNamedWindow( "result", 1 ); cvNamedWindow( "gray", 1); cvNamedWindow("face",1); const char* filename = "lena.jpg"; //待检测图像(包含绝对路径) //const char* filename = "景甜.jpg"; IplImage* image = cvLoadImage( filename, 1 ); //加载图像 detect_and_draw( image ); //对加载的图像进行检测 cvWaitKey(0); cvReleaseImage( &image ); cvDestroyWindow("result"); cvDestroyWindow("gray"); return 0;}void detect_and_draw( IplImage* img ){ static CvScalar colors[] = { {{0,0,255}}, {{0,128,255}}, {{0,255,255}}, {{0,255,0}}, {{255,128,0}}, {{255,255,0}}, {{255,0,0}}, {{255,0,255}} }; double scale = 1.3; IplImage* gray = cvCreateImage( cvSize(img->width,img->height), 8, 1 ); IplImage* small_img = cvCreateImage( cvSize( cvRound (img->width/scale), cvRound (img->height/scale)), 8, 1 ); cvCvtColor( img, gray, CV_BGR2GRAY ); cvResize( gray, small_img, CV_INTER_LINEAR );cvShowImage("gray",small_img); cvEqualizeHist( small_img, small_img );cvShowImage("face",small_img); cvClearMemStorage( storage ); if( cascade ) { /*函数cvHaarDetectObjects检测图像中的目标,由OpenCV提供。*/ CvSeq* faces = cvHaarDetectObjects( small_img, cascade, storage, 1.1, 2, 0 , cvSize(30, 30) ); for( int i = 0; i < (faces ? faces->total : 0); i++ ) { CvRect* r = (CvRect*)cvGetSeqElem( faces, i ); CvPoint center; int radius; center.x = cvRound((r->x + r->width*0.5)*scale); center.y = cvRound((r->y + r->height*0.5)*scale); radius = cvRound((r->width + r->height)*0.25*scale); cvCircle( img, center, radius, colors[0], 3, 8, 0 );printf("%d",i);printf("%d",faces->total); } } cvShowImage( "result", img ); cvReleaseImage( &gray ); cvReleaseImage( &small_img );}
0 0
- 语音识别&人脸识别
- 【人脸识别】初识人脸识别
- 【人脸识别】初识人脸识别
- OpenCV的行人识别&人脸识别
- 图片识别之人脸识别API
- OpenCV的行人识别&人脸识别
- IOS人脸识别和二维码识别
- 人脸识别之颜色识别
- Face++ 人脸识别,身份识别集成
- 人脸识别:(抓拍+识别)
- 人脸识别的发展方向:蒙面识别
- 人脸识别
- 人脸识别
- 人脸识别算法
- 简单人脸识别
- 人脸识别代码
- 人脸识别
- [Camera] 人脸识别
- C++作业2
- Spring的四种注入方式
- ansible使用注意事项
- C++第二次试验——标准体重
- 第二次上机-1
- 人脸识别
- C语言内存管理
- ClassCastException
- 控制反转理解,一个简单例子
- Android中Handler Runnable与Thread的区别详解
- 每天一个linux命令(1):which命令
- html dom教程
- 状态类和混合类(思想)(转载)
- Mysql 查看连接数,状态