人脸视频检索系统设计(C++)

article/2025/9/22 17:12:03

目录
人脸检索系统框架的构建 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;
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


http://chatgpt.dhexx.cn/article/t5tRMGOS.shtml

相关文章

AAAI 2023 | 基于多模态标签聚合的视频检索模型TABLE,多项SOTA

©作者 | QQ浏览器搜索技术中心、腾讯PCG ARC Lab 来源 | 机器之心 近年来&#xff0c;互联网短小视频内容的爆发式增长&#xff0c;对视频 - 文本检索&#xff08;Video-Text Retrieval&#xff09;的能力提出了更高的要求。在 QQ 浏览器搜索中&#xff0c;视频通常包含标…

5分钟实现「视频检索」:基于内容理解,无需任何标签

Notebook 教程&#xff1a;text-video retrieval 「视频检索」任务就是输入一段文本&#xff0c;检索出最符合文本描述的视频。随着各类视频平台的兴起和火爆&#xff0c;网络上视频的数量呈现井喷式增长&#xff0c;「视频检索」成为人们高效查找视频的一项新需求。传统的视频…

视频内容检索概述

视频内容检索 针对目前多媒体搜索引擎技术&#xff0c;视频数量的井喷式增加以及多媒体视频内容的多样性和数据结构的复杂性&#xff0c;如何快速的从有效地这些视频检索出人们感兴趣的已经成为当今信息化时代的难题。 数字视频内容检索 基于内容的视频检索&#xff08;CBVR…

ad建集成库_手把手教你创建自己的Altium Designer集成元件库

一个善于规划、管理及总结的硬件开发工程师都喜欢创建自己的集成库,这样就相当于给自己打造了一款更适合自己的尖兵利器,无论是硬件设计的统一性还是硬件模块的可重用性,都会给工程师带来更多的设计便利。 一个管理规范的硬件开发企业,在集成库的制作及使用方面都会做出很多…

NC57中间表数据源的设置流程

目前场景如下&#xff1a;NC定时将数据写入中间库中&#xff0c;第三方去中间库中抓取&#xff1b; 方式一&#xff1a; 第一步&#xff1a;在NC客户端【客户化】——【二次开发工具】——【参数设置】——【参数模板管理】添加所设置的数据源数据 找到对应的数据库表pub_sysi…

分库分表介绍

目录 一、前言 二、何谓数据切分? 三、垂直切分 1、垂直分库 2、垂直分表 3、垂直切分优缺点 4、拆分需考虑的业务因素 四、水平切分 1、水平分库 2、水平分表 3、水平切分优缺点 五、垂直与水平切分的联合使用 六、数据分片规则 1、Hash取模分表 2、数…

分库分表入门介绍

本文收集网上资料&#xff0c;多合一 编撰于2020年4月21日 原文链接1 原文链接2 原文链接3 目录 为什么要分库分表读写分离&#xff0c;主从复制Why Not NoSQL/NewSQL?什么是RDBMS 分库分表概述切分策略路由规则范围路由hash算法路由配置 分库分表带来的问题join操作COUNT&…

工作区、暂存区、仓库三者关系

区分三者关系 Git最让你迷惑的无非是它里面的各种概念了&#xff0c;如果是刚开始接触Git希望看完本篇介绍之后有一个清晰的认识&#xff0c;笔者认识也有限这里只说说个人对使用Git的感受&#xff0c;说一下它里面的几个最常用的概念的理解。 在初始化git版本库之后会生成一个…

浅谈MYSQL中的基本表、中间表、临时表、派生表和视图

简单介绍 首先我们先了解一下什么叫虚拟表虚拟表&#xff0c;顾名思义就是就是实际上并不存在&#xff08;物理上不存在&#xff09;&#xff0c;但是逻辑上存在的表。 在MYSQL中存在三种虚拟表&#xff1a;临时表、内存表、视图 1、基本表 基本表是本身独立存在的表&#x…

常见的系统间接口方式(02)-中间件的数据接口模式

导读&#xff1a; 原文路径&#xff1a;https://mp.weixin.qq.com/s/uq9DfxE5_cvAsitqlcblBg 大家可以关注我个人公众号&#xff0c;所有分享内容&#xff0c;会在公众号第一时间推送&#xff0c;且阅读排版更好。 愿大家的学习&#xff0c;轻松且愉快。 如果大家觉得有用&…

python matlab库使用_python matlab库

python与matlab的优缺点比较matlab主要是用来做数值计算的(矩阵,向量是强项),当然还加入了其他的许许多多的库。主要用来模拟一些东西。 python是一门语言,现在也有模拟matlab的库,不过功能显然还是很弱的。 python与matlab哪个简单 简单对比: python和matlab的共同点都是…

MYSQL:创建中间表

mysql> create table role_to_privilege( -> id int primary key auto_increment, -> rId int not null, -> pId int not null -> ); Query OK, 0 rows affected (0.09 sec)

中间表是什么?和报表有什么关系?会带来怎样的问题?又如何解决?

在数据库中有一类用于保存中间计算结果的物理表&#xff0c;通常被称为“中间表”。中间表主要跟 OLAP&#xff08;在线联机分析&#xff09;业务有关&#xff0c;产生的原因主要有以下几方面。 中间表来源 1. 计算逻辑复杂 在 OLAP&#xff08;报表或查询&#xff09;业务中&…

mysql 中中间表是什么意思_为什么会有这么多中间表?

中间表的由来 中间表是数据库中专门存放中间计算结果的数据表。报表系统中的中间表是普遍存在的。那么,这些中间表是如何出现的?为什么中间表会越来越多?中间表会给项目组带来什么样的困扰,如何解决这些困扰?这里我们就尝试探讨一下这个问题。 中间表出现的典型场景主要有…

IT 接口对接:足迹第十二步接口对接的定义(接口对接分三种:中间库方式的接口对接,Rest格式URL对接和HTTP格式URL对接;)

1&#xff09;接口对接的定义&#xff1a;服务端通过暴露地址/参数名称/编码&#xff0c;指引客户端发送一个Rest风格的URL请求&#xff0c;服务端读取Rest风格的URL&#xff0c;并返回一个响应&#xff1b; 接口有四部分组成&#xff1a;方法、uri、请求参数、返回参数&#…

MSSQL中间库对接MySQL

需要下载MySQL ODBC数据源驱动程序&#xff0c; 在MSSQL所在服务器安装MySQL ODBC数据源驱动程序&#xff0c;安装完成之后&#xff0c;在【控制面板】->【工具管理】->【ODBC数据源(64bit)/ODBC数据源(32bit)】->【系统DSN】->【添加】下多了MySQL数据源的驱动程…

四点流程做好商机管理

企业想做好商机管理&#xff0c;仅凭员工是做不到的&#xff0c;借助CRM销售管理系统是比较明智的选择。接下来小编从客户信息管理、业务进程跟踪、设置提醒、销售漏斗等方面讲讲企业如何做好商机管理。 只有提高商机的转化率&#xff0c;企业的利润才会增长。想做好商机管理&…

想通过互联网创业,如何找到商机项目创业呢

很多人都像在互联网上创业&#xff0c;但是互联网创业看着简单&#xff0c;其实挺考验一个人的眼力和思维能力&#xff0c;最重要是经验&#xff0c;今天不说什么理论方面的&#xff0c;只说一个简单牛逼的方法 首先你创业目的是为了什么&#xff1f; 拯救世界&#xff1f;做…

与山东云蚁旅游一起,发现旅游行业的无限商机和潜力!

随着人们生活水平的不断提高&#xff0c;旅游业迅猛发展已成为大势所趋。山东云蚁旅游作为一家专业的旅游服务机构&#xff0c;一直致力于为广大消费者提供最优质的旅游服务&#xff0c;在市场上享有良好的声誉和知名度。 如今&#xff0c;随着旅游市场的进一步开放和竞争加剧…

把信息变成商机

在商界的高层管理人员看来&#xff0c;公司中充斥着各种各样的信息。他们试图对这些信息进行管理和利用&#xff0c;从而为决策、财务管理和客户服务提供支持。 但是他们没有意识到&#xff0c;即便能够实现上述目标&#xff0c;他们也仅仅只是赶上了昨天的步伐而已。信息的发展…