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

news2024/11/26 2:47:39

目录
人脸检索系统框架的构建 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://www.coloradmin.cn/o/4402.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

腾讯148道面试题,(程序员必备学习方向)全会拿45Koffer没问题

相信你可能经历过这些&#xff1a; 已经工作两三年了&#xff0c;每个项目都会加班加点全力以赴去完成&#xff0c;薪资增长幅度却不如人意。听说年后离职的老同事&#xff0c;金三刚拿下高薪offer&#xff0c;年薪直奔50万了。由于现在的公司接触不到新技术&#xff0c;对自己…

思科网络部署实验

作者介绍&#xff1a; 作者&#xff1a;小刘在C站 每天分享课堂笔记&#xff0c;一起努力&#xff0c;共赴美好人生&#xff01; 夕阳下&#xff0c;是最美的绽放。 今天带个大家一个实验&#xff0c;为网络篇的综合实验&#xff0c;有能力的可以试一试不会的可以私信小刘。 配…

排序算法:插入排序、冒泡排序、选择排序、希尔排序、堆排序、快速排序、归并排序

排序算法相关总结&#xff0c;涉及的排序算法有&#xff1a;插入排序、冒泡排序、选择排序、希尔排序、堆排序、快速排序、归并排序&#xff08;动图不是自己画的&#x1f31e;&#xff09;。 目录1.插入排序2.冒泡排序3.选择排序4.希尔排序5.堆排序6.快速排序7.归并排序总结稳…

【Revit二次开发】模型中存储数据——参数和外部存储(Parameter, Schema and Entity)

模型中存储数据参数读取写入外部存储SchemaEntity快速获取外部存储参数参数 在Revit平台API中&#xff0c;每个图元对象都有参数属性&#xff0c;它是隶属于图元所有属性的集合&#xff0c;在此集合中更改属性值。 每个图元的参数都有一个与之关联的ElementId类型的ID大多数参…

KMP算法

文章目录KMP算法KMP算法 KMP算法要解决的问题就是在字符串&#xff08;也叫主串&#xff09;中的模式&#xff08;pattern&#xff09;定位问题。说简单点就是我们平时常说的关键字搜索。模式串就是关键字&#xff08;接下来称它为P&#xff09;&#xff0c;如果它在一个主串&…

C++图的建立---邻接矩阵-----邻接表

目录 图的表示方式 邻接矩阵 邻接表 图的遍历 深度优先遍历 深度优先遍历算法步骤&#xff1a; 图的广度优先遍历 广度优先遍历算法步骤: 图的邻接矩阵存储来创建图 代码 运行结果&#xff1a; 图的邻接表存储来创建图 如下图&#xff1a; 运行结果&#xff1…

认定能源管理体系的条件

能源管理体系认证申请清单&#xff08;GB/T 23331-2012《能源管理体系 要求》国家标准&#xff09;体系运行时间超过6个月 1、营业执照复印件&#xff1b; 2、组织机构代码证&#xff08;适用时&#xff09;&#xff1b; 3、生产许可证和其他行政许可证明复印件、资质证明等…

保卫城市消费券安全,从这些做起

近日&#xff0c;顶象发布的《城市消费券安全调研报告》&#xff08;以下简称《调研报告》&#xff09;中明确提出&#xff0c;自消费券发放之日起&#xff0c;黑灰产便盯上了这块蛋糕。据不完全统计&#xff0c;190多亿的消费券&#xff0c;消费者只抢到29%。 而在百度键入消…

公众号网课答案在线查搭建

公众号网课答案在线查搭建 本平台优点&#xff1a; 多题库查题、独立后台、响应速度快、全网平台可查、功能最全&#xff01; 1.想要给自己的公众号获得查题接口&#xff0c;只需要两步&#xff01; 2.题库&#xff1a; 题库&#xff1a;题库后台&#xff08;点击跳转&#…

操作系统实验三虚拟存储器管理之模拟页面置换算法(FIFOLRU)

文章目录 一、概述 &#xff08;1&#xff09;置换算法 &#xff08;2&#xff09;缺页率与命中率 二、先进先出置换算法&#xff08;FIFO&#xff09; (1)定义 (2)示例 &#xff08;3&#xff09;Belady异常 三、最近最久未使用置换算法&#xff08;LRU&#xff09; &#…

LeetCode每日一题——764. 最大加号标志

LeetCode每日一题系列 题目&#xff1a;764. 最大加号标志 难度&#xff1a;普通 文章目录LeetCode每日一题系列题目示例思路题解题目 在一个 n x n 的矩阵 grid 中&#xff0c;除了在数组 mines 中给出的元素为 0&#xff0c;其他每个元素都为 1。mines[i] [xi, yi]表示 g…

谈谈HTTP协议的方法里,GET和POST的区别?我来教你如何回答~

目录 前言 一、什么是GET、POST&#xff1f; 1.1GET 1.2POST 二、如何轻松回答&#xff1f; 第一步、直接盖棺定论&#xff1a; 第二步、谈细节上的区别&#xff1a; 前言 要想回答好这个问题&#xff0c;咱们先来了解以下什么是GET、POST方法&#xff0c;有哪些细节要注…

阿宇wifi球机如何连接手机

首先下载APP&#xff0c;请见以下三种方式&#xff1a; &#xff08;1&#xff09;至APP Store、各大应用市场搜索 “智U”&#xff0c;下载并安装APP。  &#xff08;2&#xff09;登录ezcloud.uniview.com官网&#xff0c;扫描界面右下方智U APP二维码&#xff0c;下载并…

SpringBoot线上服务假死解决,CPU内存正常

背景 开发小伙伴都知道线上服务挂掉&#xff0c;基本都是因为cpu或者内存不足&#xff0c;出现GC频繁OOM之类的情况。本篇文章区别以上的情况给小伙伴们 带来不一样的服务挂掉。 还记得哔哩哔哩713事故中那场诡计多端的0吗&#xff1f; 对就是这个0&#xff0c;和本次事故没关…

Python基础知识入门(二)

Python基础知识入门&#xff08;一&#xff09; 一、数字类型 Python 数字数据类型用于存储数值。数据类型是不允许改变的&#xff0c;如改变数字数据类型的值&#xff0c;将重新分配内存空间。 1.数字函数 函数 描述 abs(x) 返回数字的绝对值。如abs(-10) 返回 10。 fa…

前端小游戏——推箱子

最近刚刚更新完了HTML&#xff0c;CSS的万字总结&#xff0c;有很多人已经学习完了文章&#xff0c;感觉反馈还不错&#xff0c;今天&#xff0c;用HTML&#xff0c;CSS&#xff0c;JS的知识编写了一个童年经典游戏 - 推箱子&#xff0c;供学习参考。 推荐学习专栏&#xff1a…

EdrawMax Ultimate v12.0 图表和流程图

EDraw Max 是一个多合一的应用程序&#xff0c;用作演示构建器、图表创建者、可视化业务规划师和协作空间&#xff08;用于快速共享图表和模型并接收反馈&#xff09;。 该软件可用于哪些潜在用途&#xff1f; 任何人都可以从 EDraw Max 中受益。它所针对的主题和感兴趣的领域…

【EasyRL学习笔记】第十一章 模仿学习

文章目录一、前言二、行为克隆三、逆强化学习四、第三人称视角模仿学习五、序列生成和聊天机器人六、关键词总结七、习题一、前言 模仿学习 (imitation learning&#xff0c;IL) 讨论的问题是&#xff0c;假设我们连奖励都没有&#xff0c;要怎么进行更新以及让智能体与环境交…

黑马学Docker(二)

目录&#xff1a; &#xff08;1&#xff09;容器命令介绍 &#xff08;2&#xff09; 容器命令案例1 &#xff08;3&#xff09;容器命令案例2 &#xff08;4&#xff09;容器命令练习 &#xff08;5&#xff09;数据卷命令 &#xff08;6&#xff09; 数据卷挂在案例1 …

数字孪生:实现保险行业数字化转型

现如今&#xff0c;数据分析在各个行业都在广泛的使用&#xff0c;保险行业也不例外。在数字化浪潮席卷全球的时代&#xff0c;如何利用数字化技术驱动业务增长&#xff0c;实现数字化转型&#xff0c;是目前保险行业需要思考的问题。 可视化技术能够助力保险机构更好地解决互联…