【人脸识别】形态学教室人数统计(带面板)【含Matlab源码 1703期】

news2025/1/11 0:31:15

⛄一、人数统计简介(附课程作业报告)

1 课题背景
本课题为基于matlab的人数统计系统。近年来,很多行业对人流信息有极大的需求,如汽车公交站,地铁站台,商场出入口等。通过人数统计系统可以方便、可靠、实时地对各种场所的人流进行统计,而不对公众造成任何影响。结合其他图像分析技术,系统可以清楚快捷地掌握客流动态,提供数据支持,使决策者及时做出对策。利用图像处理来完成人数统计系统的主要优点就是图像信号非常直观,便于人为的理解。可以看出,图像的人数统计无论是在商业信息采集还是公共安全监控方面具有重要意义,图像的人数统计识别算法的研究无论在理论上还是在实际应用领域都有着诱人的发展前景。
2 课题分析
本文采用基于matlab GUI形态学人数统计,老师点名效率得到很大提升。
3 社会需求分析
(1)对同学来说:脱离高中魔鬼式的学习,迈入高校的殿堂,许多在校大学生作息时间紊乱,课堂到课情况不理想。出现缺课、旷课情况,严重影响到学业成绩。更有少数学生利用上课时间出去游玩,发生意外。让学生养成一个好的作息习惯,规范学生的考勤,是很多高校最想做到的事情之。因此,快速、有效的出勤统计对大学生的学习以及学习至关重要。
对老师来说:统计出勤情况是记录学生课程学习过程、提供平时成绩评定依据、减少学生发生意外的风险的有效方法。而传统考察出勤人数的方式大多耗时费力,在浪费宝贵课堂时间的同时,也为老师增添了负担。
4 为了说明开发本项目—教室人员统计系统的必要性,我们对传统的考察出勤人数方式进行了分析。
(a)花名册顺序点名
教师或者教师让一名学生使用花名册进行顺序点名。
优点:每一名学生都要答到,教师可以有更多的机会认识每一位同学,比较真实的反应了学生的到课情况。
缺点:如果学生的人数比较多,会浪费学生和老师很多的宝贵时间,并且,存在其他同学帮忙答到的情况。
(b)花名册随机点名
教师第一次上课时,使用花名册进行顺序点名,未到的同学做好标记。下次上课的时候先点前几次未到的同学,然后再随机点几名同学。
优点:随机点名法节省了大量的时间,给那些点名未到的同学施加适当的压力,班级旷课的同学基本.上都是“老面孔”,这种方法可以让那些同学不敢再旷课。
缺点:第一次点名仍然要花费大量的时间,随机点名法存在很多“运气”成份,可能会有一些同学经常没来.上课,但没有被发现。
©固定座位
让所有的学生靠前坐,并给班级的每位学生固定座位,上课后,统计缺席人员名单。
优点:老师在上课的时候,可以清楚地看到学生的出勤情况。学生座位靠近讲台,可以提高学生的上课注意力。
缺点:高校学生上课要经常更换教室,固定座位的做法,随着教室的变动会带来很多不便。
(d)分组统计
将班级的学生分为多个小组,每个组选出一一个小组长,由小组长确定小组人员的到课情况,下课后, 小组长将名单交给老师。
优点:节省了老师的时间,便于进行以小组为单位的讨论和学习。
缺点:可能会存在小组长包庇组员的情况,教师无法确定学生的真实出勤率。
4 为了了解大学生对本项目—教室人员统计系统的接受度,我们使用问卷星对大一至大四的在读本科生进行了问卷调查。以下为调查结果分析:
调查结果显示被调查者在校期间考察出勤的方式中传统点名占72.13%,软件签到占19.03,其他占9.84%。由此可见传统点名占占据考察方式的大多数,仍没有可以完全取代它的方式出现。
对于本项目中通过老师拍照的方式统计出勤人员可能涉及肖像权的问题,仅有9.67%人会有些介意,49.34%完全不在意。而更多则是没考虑过这个这问题,占总人数的40.98%。 由此可见忽略极少部分,可以认为通过拍照方式统计人数可以被大多数人接受。
被问及此项目优缺点时,认为这种方式速度快的占参与者的57.38%,方便占30.17%,其它占12.45%。而他们担心的问题中担心统计不准切导致“被”缺勤占比最高达83.61%。
综上调查,我们认为目前需要一种比传统点名更高效的方式出现。此项目正是想要弥补这一空缺。而提高系统性能,减少差错的出现是增强教室人员统计系统实用性的关键。
5 计算机视觉系统工具箱简介
计算机视觉系统工具箱(Computer Vision System Toolbox,CVST)是Matlab2012b版本自带工具箱。该工具箱不仅包括用于特征提取、运动检测、目标检测、目标跟踪、立体视觉、视频处理、视频分析的算法,还包括视频文件输入输出,视频显示,绘图以及合成。这些功能以Matlab函数、Matlab系统对象、Simulink块的形式提供。对于快速原型和嵌入式系统设计,该工具箱支持定点算法和C代码产生。
  计算机视觉系统工具箱的人脸检测算法主要基于Viola-Jones的人脸检测,通过内置的类和函数进行人脸甚至是鼻子、嘴以及眼睛的自动检测。Viola-Jones人脸检测是Paul viola 和 Michael J Jones共同提出的一种人脸检测算法,该算法原理简单,耗费资源小,在提出后被广泛用于人脸检测。Viola-Jones人脸检测主要包含Haar-like特征、积分图、AdaBoost迭代算法和级联分类器等内容,实现人脸检测的主要步骤是:①利用Haar-like矩形特征表征人脸,使用“积分图”对图像中的矩形特征进行快速计算。②利用AdaBoost算法从数量巨大的Haar-like特征中训练出人脸检测所需要的分类器。③将训练得到的强分类器进行级联,利用级联的强分类器构成最终的分类器。
  计算机视觉系统工具箱只需要用简单的命令即可实现人脸检测。调用工具箱中的vision.CascadeObjectDetector即可运行。不仅运行速度较快,且人脸检测准确度很高。经过自行改进,可进行批处理。

6 方案设计
6.1框架设计
该项目要完成的功能是:根据所给的图片,实现自动人脸检测,人数统计,要求含有GUI界面,且算法能够准确的实现人数的统计,拥有较快的运算速度,具有较好的实时性。

6.2界面设计
首先,将页面背景设置为灰白色,在中心及偏左页面设置两个坐标系axes1以及axes2,用以显示后来选中的图片和人脸识别后已框出人脸的图片。在坐标系右边从上到下依次拖拽设置pushbutton1、pushbutton2、edit1、text1、pushbutton2。其中,pushbutton1上编辑‘打开教室图片’字样,用以完成打开图片功能;edit1上编辑‘统计结果’字样;text4中显示‘统计结果’的结果;pushbutton2上编辑‘统计人数’,通过点击此按钮实现统计人数的功能;最后一个pushbutton3上编辑‘完成’字样,完成关闭功能。坐标轴上方还设置一个text2,编辑‘欢迎使用教室人数统计系统’作为标题。至此完成页面的界面设计。
在这里插入图片描述

6.3功能设计
对于pushbutton1按钮,即点击‘打开教室图片’,是使用uigetfile函数标准化打开选择文件对话框,此时会弹出此电脑的文件界面,选择一张带有人的图片后,点击确认即可在axes1上显示该选中图片,且在此图片上方设置标题‘教室照片’,完成选中图片功能。其次点击‘统计人数’按钮,在代码中取得打开图片的相关数据,将彩色图像转化为灰度图像等等处理,设置路径将此转化处理后的图像显示在axes2,此外还可找到图片中的人脸,绘制边框圈出来,统计出边框的个数反映在text1中,且在此图像上方设置标题‘框出人脸区域’。至此完成此设计的全部功能。下图为该项目的功能流程图:
在这里插入图片描述
图1 功能流程图

⛄二、部分源代码

function varargout = face_collection(varargin)
% FACE_COLLECTION MATLAB code for face_collection.fig
% FACE_COLLECTION, by itself, creates a new FACE_COLLECTION or raises the existing
% singleton*.
%
% H = FACE_COLLECTION returns the handle to a new FACE_COLLECTION or the handle to
% the existing singleton*.
%
% FACE_COLLECTION(‘CALLBACK’,hObject,eventData,handles,…) calls the local
% function named CALLBACK in FACE_COLLECTION.M with the given input arguments.
%
% FACE_COLLECTION(‘Property’,‘Value’,…) creates a new FACE_COLLECTION or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before face_collection_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to face_collection_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE’s Tools menu. Choose “GUI allows only one
% instance to run (singleton)”.
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help face_collection

% Last Modified by GUIDE v2.5 13-A-2021 12:23:11

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct(‘gui_Name’, mfilename, …
‘gui_Singleton’, gui_Singleton, …
‘gui_OpeningFcn’, @face_collection_OpeningFcn, …
‘gui_OutputFcn’, @face_collection_OutputFcn, …
‘gui_LayoutFcn’, [] , …
‘gui_Callback’, []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT

% — Executes just before face_collection is made visible.
function face_collection_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to face_collection (see VARARGIN)

% Choose default command line output for face_collection
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

% UIWAIT makes face_collection wait for user response (see UIRESUME)
% uiwait(handles.figure1);

% — Outputs from this function are returned to the command line.
function varargout = face_collection_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure
varargout{1} = handles.output;

function edit2_Callback(hObject, eventdata, handles)
% hObject handle to edit2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,‘String’) returns contents of edit2 as text
% str2double(get(hObject,‘String’)) returns contents of edit2 as a double

% — Executes during object creation, after setting all properties.
function edit2_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,‘BackgroundColor’), get(0,‘defaultUicontrolBackgroundColor’))
set(hObject,‘BackgroundColor’,‘white’);
end

% — Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global I
[x,y,c]=ginput(2);
if c==1
BB=imcrop(I,[min(x(1),x(2)),min(y(1),y(2)),abs(x(2)-x(1)),abs(y(2)-y(1))]);
BB=imresize(BB,[252 202]);
axes(handles.axes2); % 处理后的图像放在axes2中
imshow(BB)
end

function edit1_Callback(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,‘String’) returns contents of edit1 as text
% str2double(get(hObject,‘String’)) returns contents of edit1 as a double

% — Executes during object creation, after setting all properties.
function edit1_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,‘BackgroundColor’), get(0,‘defaultUicontrolBackgroundColor’))
set(hObject,‘BackgroundColor’,‘white’);
end

% — Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
[filename, pathname] = uigetfile( …
{‘.jpg;.png;.jpeg’, 'Image Files (.bmp;.jpg;.png;.jpeg)'; …
'
.', 'All Files (.*)’}, …
‘Pick an image’);
if isequal(filename,0) || isequal(pathname,0),
return;
end

⛄三、运行结果

在这里插入图片描述

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]孟逸凡,柳益君.基于PCA-SVM的人脸识别方法研究[J].科技视界. 2021,(07)
[2]张娜,刘坤,韩美林,陈晨.一种基于PCA和LDA融合的人脸识别算法研究[J].电子测量技术. 2020,43(13)
[3]陈艳.基于BP神经网络的人脸识别方法分析[J].信息与电脑(理论版). 2020,32(23)
[4]戴骊融,陈万米,郭盛.基于肤色模型和SURF算法的人脸识别研究[J].工业控制计算机. 2014,27(02)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/94928.html

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

相关文章

5-6: Elasticsearch(入门安装)

Elasticsearch简介 一个分布式的(多台服务器集群部署)、Restful风格(设计风格,前后端交互的风格,请求标准的描述)的搜索引擎。支持对各种类型的数据的检索。搜索速度快,可以提供实时的搜索服务。便于水平扩展&#xf…

23.层和块

在构造自定义块之前,我们先回顾一下多层感知机 的代码。 下面的代码生成一个网络,其中包含一个具有256个单元和ReLU激活函数的全连接隐藏层, 然后是一个具有10个隐藏单元且不带激活函数的全连接输出层。 import torch from torch import nn …

是面试官放水,还是公司实在是太缺人?这都没挂,京东原来这么容易进...

“京东是大企业,是不是很难进去啊?”“在京东做软件测试,能得到很好的发展吗?一进去就有9.5K,其实也没有想的那么难”直到现在,心情都还是无比激动! 本人211非科班,之前在字节和腾讯…

第04讲:Security之用户授权

一、创建项目 参考:浅试Security 二、实现用户授权 2.1、基于权限进行访问控制 hasAuthority方法:如果当前的主体具有指定的权限,则返回true,否则返回false。hasAnyAuthority方法:如果当前的主体有任何提供的权限的…

二叉树的前序-中序-后序遍历

在牛客网刷到了二叉树的遍历,二叉树的遍历分为前序遍历,前序遍历也有先序遍历之称,还有中序遍历,以及后序遍历,这么多种遍历,遍历的方式不一样而已,前序遍历是先遍历根然后左节点然后是右节点&a…

两年前端的2022:24岁、辗转三省、进入阿里

前言 前排声明:文中主人公不是博主,另外本文只是一些朋友在工作、生活上的经历和琐碎,想看技术干货的掘友请止步,不要在本文上浪费你的学习时间~~~ 2022年,也实实在在满24岁了,毕业进入社会两年多&#xff…

我与外企上司的四个职场故事

标题:我与外企上司的四个职场故事 我在目前这家任职的外企从事软件开发工作,已经整整十五年了。本系列文章通过介绍我与自己上司的四个职场小故事,想和大家分享在外企里,一个程序员除了埋头提升自己技术之外,还有哪些…

数据自动录入并生成报表神器怎么玩?

做报表、分析数据、做汇报是许多打工人的日常,每天都要耗费不少的时间用Excel来整理、清洗数据和生成好看的报表。如果这些数据都是手动整理、复制粘贴的话,不仅费时费力,而且很容易出错。 在越来越多企业采用SaaS产品和不同数据应用的今天&…

没有任何销售经验怎么进行销售团队管理?

没有任何销售经验想要进行销售团队管理,并不是一件容易的事情。每一行都有值得研究和学习的地方,需要学习补充的知识点还是比较多的。 参考《销售管理管理成长手册》,本文为您讲解以下管理知识,包括:1、明白销售经理是…

春招升级打怪拿offer,10w+字总结的Java面试题(附答案)够你刷

春招升级打怪拿offer,献上熬夜整理最新“10w字总结的Java面试题(附答案)”够你刷! 其包含的内容模块有:基础、JVM、多线程与高并发、Spring、MyBatis、SpringBoot、MYSQL、SpringCloud、Dubbo、Nginx、MQ、数据结构与算…

libevent实战学习

目录 编译安装libevent libevent 事件对象 事件操作 事件循环 事件处理 libevent 客户端demo libevent 服务端demo libevent 服务端升级demo libevent完整demo 总结 C/CLinux服务器开发/后台架构师【零声教育】-学习视频教程-腾讯课堂 编译安装libevent git上下载h…

十分钟彻底搞懂python异常

异常 目标 异常的概念捕获异常异常的传递抛出异常 01. 异常的概念 程序在运行时,如果 Python 解释器 遇到 到一个错误,会停止程序的执行,并且提示一些错误信息,这就是 异常程序停止执行并且提示错误信息 这个动作,…

真无线耳机哪个品牌音质最好?半入耳式真无线蓝牙耳机推荐

对于社恐的人来说,出门在外都会选择佩戴上耳机,那么这种情况下,一款高品质的耳机真的是必不可少的,选择了一款性能优秀的耳机,不光能够让自己听音乐的过程中有更好的体验感,同时还能舒缓身心,让…

编程常见的问题(三) 线程池

编程常见的问题(三) 线程池 今天,我来讲讲使用线程池需要注意的一些问题。 在程序中,我们会用各种池化技术来缓存创建昂贵的对象,比如线程池、连接池、内存池。一般是预先创建一些对象放入池中,使用的时候直接取出使用&#xff…

[附源码]Node.js计算机毕业设计高校运动会管理系统Express

项目运行 环境配置: Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境:最好是Nodejs最新版,我…

阿里三面,mmap 没答好!

1、mmap基础概念 mmap 是一种内存映射文件的方法,即将一个文件或者其他对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一映射关系。 实现这样的映射关系后,进程就可以采用指针的方式读写操作这一段内存&a…

给你30s,如何跟面试官讲清楚跳表

查找 假设有如下这样一个有序链表: 想要查找 24、43、59,按照顺序遍历,分别需要比较的次数为 2、4、6 目前查找的时间复杂度是 O(N),如何提高查找效率? 很容易想到二分查找,将查找的时间复杂度降到 O(Lo…

MipNeRF:多尺度、抗混叠NeRF

Mip-NeRF: A Multiscale Representation for Anti-Aliasing Neural Radiance Fields ​ ICCV 2021 文章目录Mip-NeRF: A Multiscale Representation for Anti-Aliasing Neural Radiance Fields原始NeRF的问题重点componentsCone TracingIPE-integrated positional encodingPE与…

微服务框架 SpringCloud微服务架构 多级缓存 47 Lua 语法入门 47.2 变量和循环

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 多级缓存 文章目录微服务框架多级缓存47 Lua 语法入门47.2 变量和循环47.2.1 数据类型47.2.2 变量47.2.3 循环47 Lua 语法入门 47.2 变量和…

人脸识别Face Recognition综述

综述:https://arxiv.org/pdf/2009.13290.pdf 人脸识别整个系统一般由三个关键要素构成:人脸检测(face detection)、人脸预处理(face preprocess),人脸表征(face representation&…