人脸视频检索系统设计(C++)
Posted biyezuopinvip
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了人脸视频检索系统设计(C++)相关的知识,希望对你有一定的参考价值。
目录
人脸检索系统框架的构建 1
一.软件实现的主要界面 1
二.软件的需求概括 1
三.软件代码设计过程中需要注意的问题 2
四.程序到目前为止产生的诸多缺陷 4
五.程序的详细设计过程 4
1.输入部分的设计 4
2.检测结果部分的设计过程 10
人脸检索系统框架的构建
------FaceMFC_v1
一.软件实现的主要界面
软件的主要界面如图1.1所示,从程序的主界面可以看出整个系统主要由两大模块构成,包括:人脸的输入和检测模块,以及人脸识别和检索模块。按照组成部分可以将整个系统分成六个部分:包括:1.输入部分,2.检测结果,3.视频操作,4.信息配置,5.输出结果,6.软件简介。
图1.1 人脸检索系统主界面
二.软件的需求概括
软件主要的功能部分:
(1):能够打开读取任何BMP或者JPG图像,并将图像显示到固定空间上。(2):能够在控件上通过鼠标操作实现任意图像大小的剪裁,并实现剪裁后的图片显示。
(3):能够对任意一幅图像进行人脸检测,包括对图像剪裁之后,只对剪裁区域进行人脸检测。
(4):图像的重新加载,任何图像都与可能误操作,此时可以通过重新加载来实现数据恢复到原始的读入时的图像数据,包括实施剪裁的数据的清空。(5):图像信息的显示,主要是指一些简单的图像信息,包括图像的宽度、高度以及位深。
(6):人脸教案车结果的显示,就是将提供带检测的图像中人脸区域找出,并将其显示到指定的控件中,在此系统中并没有将全部检测到的人脸显示出来,不能动态显示(可以作为其缺钱在后面再叙述)。
(7):能够打开Xvid编码格式的avi视频文件,并获得视频文件的相关信息,并且通过制定控件查看,只包括简单的视频长度和宽度以及帧速率。
(8):能够实现简单的视频操作,包括视频在指定的控件上播放,能在暂停和播放模式之间切换.播放时能够显示相应的信息,包括总的视频时间长度,播放的动态时间显示,滑动条显示播放进度。
(9):人脸检索主要是对从视频中抓取的一帧图像进行人脸检测,并对其与检测输入选择的人脸进行识别,识别过程主要是计算所有人脸的欧式距离,默认距离最小值为识别的结果。
(10):可以进行检索之前的信息配置,本文转载自http://www.biyezuopin.vip/onews.asp?id=11024包括对视频检索步长的选取,以及检索时间段的选取。
(11):显示视频中最像待识别人脸的12个结果,每次显示六个结果,通过“上”“下”按键可以选择循环显示。
(12):能够对检测结果进行跟踪,即找出每个检索结果所在视频帧,以及相对应的时间,可以直接在原视频中查看原始图像。
(13):显示软件的相关介绍。
(14):所有显示图像的窗口都必须实现重绘的功能,就是在窗口最小化或被遮掩之后恢复之后原图的显示不会出现任何问题。
#include "cv.h"
#include "highgui.h"
#include "cxcore.h"
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <math.h>
#include <float.h>
#include <limits.h>
#include <time.h>
#include <ctype.h>
#define DEFAULT_CASCADE_NAME "C:\\\\Program Files\\\\OpenCV\\\\data\\\\haarcascades\\\\haarcascade_frontalface_alt2.xml"
#ifdef _EiC
#define WIN32
#endif
//int detect_and_draw( IplImage* image ,CvHaarClassifierCascade* cascade);
static CvMemStorage* storage = 0;
static CvHaarClassifierCascade* cascade = 0;
//static CvHaarClassifierCascade* cascade = (CvHaarClassifierCascade*)cvLoad ( DEFAULT_CASCADE_NAME, 0, 0, 0 );
//void detect_and_draw( IplImage* image );
const char* cascade_name ="../debug/haarcascade_frontalface_alt2.xml";
//cascade = (CvHaarClassifierCascade*)cvLoad (cascade_name, 0, 0, 0 );
/* "haarcascade_profileface.xml";*/
/*int detect_and_draw( IplImage* img,CvHaarClassifierCascade* cascade )
storage = cvCreateMemStorage(0);
//AfxMessageBox("hi,you!");
int scale = 1;
IplImage* temp = cvCreateImage( cvSize(img->width/scale,img->height/scale), 8, 3 );
CvPoint pt1, pt2;
int i,N=0;
//cvPyrDown( img, temp, CV_GAUSSIAN_5x5 );
cvClearMemStorage( storage );
//cvEqualizeHist(small_img,small_img);
//AfxMessageBox("3");
//cvClearMemStorage( storage );
//AfxMessageBox("4");
if( cascade )
//AfxMessageBox("cascade Loaded!");
CvSeq* faces = cvHaarDetectObjects( img, cascade, storage,
1.1, 2, CV_HAAR_DO_CANNY_PRUNING,
cvSize(40, 40));
//AfxMessageBox("Wrong!");
N=faces ? faces->total:0;
for( i = 0; i < (faces ? faces->total : 0); i++ )
CvRect* r = (CvRect*)cvGetSeqElem( faces, i );
pt1.x = r->x*scale;
pt2.x = (r->x+r->width)*scale;
pt1.y = r->y*scale;
pt2.y = (r->y+r->height)*scale;
cvRectangle( img, pt1, pt2, CV_RGB(255,0,0), 3, 8, 0 );
else
AfxMessageBox(cascade_name);
cvNamedWindow("result",1);
cvShowImage( "result", img );
return N;
//cvDestroyWindow("result");
//AfxMessageBox("4");
//cvReleaseImage( &gray );
//cvReleaseImage( &small_img );
*/
//把IplImage转化为CBitmap类型
HBITMAP Ipl2Bmp(IplImage *img)
HBITMAP hBitmap;
hBitmap=CreateBitmap(img->width, img->height,img->nChannels*8, 1, NULL);
SetBitmapBits(hBitmap, img->imageSize, img->imageData);
return hBitmap;
人脸识别完整项目实战:完整项目案例运行演示
一、前言
本文是《人脸识别完整项目实战》系列博文第1部分,第一节《完整项目运行演示》,本章内容系统介绍:人脸系统核心功能的运行演示。
本内容已经录制成视频课程,详见网易云课堂。
整个《人脸识别完整项目实战》系统架构结构如下图所示:
项目概述篇:系统介绍人脸识别项目的系统架构设计、项目关键技术说明、项目业务需求分析、项目业务流程设计;
环境部署篇:提供C++和Python两种编程语言的版本,系统介绍项目开发环境概述、DLib框架源码编译、项目工程文件创建、项目开发环境配置、项目性能优化设置;
程序设计篇:从实时视频采集开始,涵盖人脸区域检测、人脸特征点标定、人脸对齐、人脸比对和活体检测等全部技术环节的代码设计、运行演示和执行结果输出;
模型训练篇:基于人脸识别区域检测和人俩识别特征点标定两个应用场景,介绍数据样本采集、算法模型训练和算法模型测试的过程,让大家都人脸识别有一个完整的直观的认识;
算法原理篇:基于人脸识别区域检测和人俩识别特征点标定两个应用场景,人脸区域检测和人脸特征点标定的算法原理和实现机制,让大家对人脸识别与机器学习、深度学习进行有效关联;
学习框架篇:系统介绍主流深度学习框架,重点就本课程用到Dlib深度学习框架进行介绍,通过dlib深度学习实战案例1和dlib深度学习实战案例2,两个完整的案例,让大家对dlib的深度学习框架有一个直观的认识;
二、正文
(1)数据样本标注
(2)算法模型训练
(3)程序开发设计
3.1 实时视频采集程序设计
3.2 实时人脸检测程序设计
3.3 实时人脸特征标定程序设计
3.4 实时人脸对齐程序设计
3.5 人脸比对程序设计
3.5 活体检测之眨眼识别程序设计
3.6 活体检测值张嘴识别程序设计
三、未完待续
本文是《人脸识别完整项目实战》系列博文第2章《完整项目案例演示》,全文共53个章节,持续更新,敬请关注。人脸识别技术交流QQ群:859860225。
以上是关于人脸视频检索系统设计(C++)的主要内容,如果未能解决你的问题,请参考以下文章