ONBON预约礼包(10.24之前):https://www.wanyx.com/shoujigonglue/355388.html
七天连续签到礼包(长期):https://www.wanyx.com/shoujigonglue/355341.html
每周登录礼包(长期):https://www.wanyx.com/shoujigonglue/355298.html
国庆节Q币礼包(10.26之前):https://www.wanyx.com/shoujigonglue/355180.html
每日星币礼包(长期):https://www.wanyx.com/shoujigonglue/355053.html
4399首发礼包(长期):https://www.wanyx.com/shoujigonglue/355056.html
微信礼包(长期):https://www.wanyx.com/shoujigonglue/354953.html
新手礼包(长期):https://www.wanyx.com/shoujigonglue/354950.html
QQ浏览器礼包(10.30之前):https://www.wanyx.com/shoujigonglue/354945.html
随着科技的进步,人脸识别技术已经深入到各个领域中。在教育、企业、会议等场合,传统的签到方式如手工签名、刷卡等存在诸多问题,如容易丢失、容易被伪造等。因此,人脸识别签到系统应运而生,为各类场合提供了更加便捷、高效的签到方式。这种签到方式不仅方便快捷,而且安全性更高,能够有效地避免传统签到方式的弊端。基于人脸识别的签到系统是利用WEB框架做人员管理,注册录入相关人员的信息,再利用摄像机采集现成人脸的静态图像,并通过定点方式检测人脸特征中的关键信息,把所有信息存储到数据库中,最后用QT界面再终端进行人脸识别用同样的算法识别人脸并和数据库中的人脸信息进行比对,来判断参会人员是否为注册人员。如果识别成功,系统将自动完成签到操作并将签到记录存储在数据库中。
后台:django
前端: html javascript
数据库:mysql
人脸检测算法:dlib
人脸模型算法: 卷积神经FACENET(pytorch、tensorflow实现)
用户表:
签到记录表:
话不多说,以下是部分实施过程,篇幅有限,有兴趣的朋友可私信找我要项目全部代码或者根据需要定制你想要的系统:
1.安装Django。您可以在终端或命令提示符下使用以下命令安装最新版本的Django:
pip install django
#安装'pymysql
pip install pymysql
2.创建Django项目。在终端或命令提示符下,转到要创建项目的目录,并运行以下命令:
#其中,“HuiChang”是您想要为项目选择的名称。
#此命令将创建一个名为“HuiChang”的新目录,
#并在其中创建一个名为“manage.py”的文件。
django-admin startproject HuiChang
3.创建应用程序。应用程序是Django项目的组成部分,每个应用程序都可以包含特定于该应用程序的视图、模板和模型。在项目目录中运行以下命令以创建新的应用程序
#其中,“app_huichang”是您想要为应用程序选择的名称。
#此命令将创建一个名为“app_huichang”的新目录,
#并在其中创建一个名为“models.py”的文件。
python manage.py startapp app_huichang
4.配置mysql数据库。Django使用默认的SQLite数据库配置。在“settings.py”文件中,确保DATABASES设置为以下内容:
# mysql 配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'douban',
'USER': '',
'PASSWORD': '',
'HOST': '',
'PORT': '',
'TEST':{
'CHARSET':'utf8',
'COLLATION':'utf8_general_ci'
},
}
}
5.数据库创建
用户权限表:
在app_huichang的新目录里打开models.py,创建一个User、Role、Permission类,分别是用户信息表、身份表、权限表。定义数据库相关字段:
# 创建用户表
class User(models.Model):
name = models.CharField(max_length=32, verbose_name='用户名称')
password = models.CharField(verbose_name='密码',max_length=64,default="")
number = models.IntegerField(default=0)
huichang=models.CharField(max_length=32, verbose_name='会场', default="")
zuowei=models.CharField(max_length=32, verbose_name='座位',default="")
face_encoding=models.CharField(max_length=5000, verbose_name='人脸信息',default="")
# 与身份表的多对多外键字段,假设可以跨身份,跨部门
roles = models.ManyToManyField(to='Role')
def __str__(self):
return self.name
# 创建身份表
class Role(models.Model):
title = models.CharField(max_length=32, verbose_name='身份名称')
# 和权限表的多对多关系字段,一个身份可以有多个权限,一个权限也可以被多个身份拥有
permissions = models.ManyToManyField(to='Permission')
def __str__(self):
return self.title
# 创建权限表
class Permission(models.Model):
name = models.CharField(max_length=32, verbose_name='权限名称')
url = models.CharField(max_length=32, verbose_name='权限url')
def __str__(self):
return self.name
class Userinfo(models.Model):
first_name = models.CharField(max_length=32, verbose_name='姓')
last_name = models.CharField(max_length=32, verbose_name='名')
phone = models.IntegerField()
addr = models.CharField(max_length=64, verbose_name='住址')
签到信息表:
class qiandao(models.Model):
name = models.CharField(max_length=32, verbose_name='姓')
number = models.IntegerField(default=0)
huichang = models.CharField(max_length=32, verbose_name='会场', default="")
zuowei = models.CharField(max_length=32, verbose_name='座位', default="")
Time= models.DateTimeField('签到时间')
biaoshi=models.CharField(max_length=32, verbose_name='迟到标志', default="")
6.在模型文件中定义完类后,需要配置模型,在项目的配置文件setting.py中修改INSTALLED_APPS 中添加应用名称"app_huichang"
INSTALLED_APPS = [
"django.contrib.admin",
"django.contrib.auth",
"django.contrib.contenttypes",
"django.contrib.sessions",
"django.contrib.messages",
"django.contrib.staticfiles",
'app_huichang'
]
在admin.py文件中配置在后台显示的数据模型字段
admin.site.register(User)
admin.site.register(Role)
admin.site.register(Permission)
7.运行迁移。在终端或命令提示符下,进入项目目录,并运行以下命令以创建数据库表格:
python manage.py makemigrations app_huichang
python manage.py migrate
创建超级管理员来修改用户权限:
8.注册功能:
<div class="auth-form-light text-left py-5 px-4 px-sm-5">
<div class="brand-logo">
<h1>人脸签到系统</h1>
</div>
<h4>账号注册</h4>
<h6 class="font-weight-light">请输入相关信息</h6>
<form class="pt-3" action="{% url 'register' %}" method="post" enctype="multipart/form-data">
{% csrf_token %}
<div class="form-group">
<input type="text" name="user" class="form-control form-control-lg" id="exampleInputUsername1" placeholder="账号" value="{% if form1.user.value %} {{ form1.user.value }} {% endif %}">
{{ form1.errors.user.0 }}
</div>
{% if errMsg %}
<h4>{{ errMsg }}</h4>
{% endif %}
<div class="form-group">
<input type="email" name="email" class="form-control form-control-lg" id="exampleInputEmail1" placeholder="邮箱" value="{% if form1.email.value %} {{ form1.email.value }} {% endif %}">
{{ form1.errors.email.0 }}
</div>
<div class="form-group">
<input type="text" name="number" class="form-control form-control-lg" id="exampleInputEmail1" placeholder="参会证号" value="{% if form1.number.value %} {{ form1.number.value }} {% endif %}">
{{ form1.errors.number.0 }}
</div>
{% if errMsg1 %}
<h4>{{ errMsg1 }}</h4>
{% endif %}
<div class="form-group">
<input type="text" name="Class" class="form-control form-control-lg" id="exampleInputEmail1" placeholder="会场名" value="{% if form1.Class.value %} {{ form1.Class.value }} {% endif %}">
{{ form1.errors.Class.0 }}
</div>
<div class="form-group">
<input type="text" name="sushe" class="form-control form-control-lg" id="exampleInputEmail1" placeholder="座位号" value="{% if form1.sushe.value %} {{ form1.sushe.value }} {% endif %}">
{{ form1.errors.sushe.0 }}
</div>
<div class="form-group">
<input type="password" name="password" class="form-control form-control-lg" id="exampleInputPassword1" placeholder="密码">
{{ form1.errors.password.0 }}
</div>
<div class="form-group">
<input type="password" name="rePassword" class="form-control form-control-lg" id="exampleInputPassword2" placeholder="重复密码">
{{form1.errors.rePassword.0}}
</div>
<div class="form-group">
<label for="exampleInputConfirmPassword1">上传人脸照片</label>
<input type="file" name="myfile" class="form-control file-upload-info" placeholder="Upload Image">
{% if err %}
<h4>{{ err }}</h4>
{% endif %}
</div>
{% if error %}
<h3>{{ error }}</h3>
{% endif %}
<div class="mt-3">
<button type="submit" class="btn btn-block btn-primary btn-lg font-weight-medium auth-form-btn">注册</button>
</div>
<div class="text-center mt-4 font-weight-light">
已有账号? <a href="/login" class="text-primary">去登陆</a>
</div>
</form>
</div>
8.登录功能:
<div class="auth-form-light text-left py-5 px-4 px-sm-5">
<div class="brand-logo">
<h2>人脸签到系统</h2>
</div>
<h4>你好! 欢迎登陆</h4>
<h6 class="font-weight-light"></h6>
<form class="pt-3" action="{% url 'login' %}" method="post">
{% csrf_token %}
<div class="form-group">
<input type="username" name ="username" class="form-control form-control-lg" id="exampleInputEmail1" placeholder="账号">
</div>
<div class="form-group">
<input type="password" name="password" class="form-control form-control-lg" id="exampleInputPassword1" placeholder="密码">
</div>
{% if errMsg %}
<h4 style="background-color: #fef0f0";>{{ errMsg.error }}</h4>
{% endif %}
<div class="mt-3">
<button type="submit" class="btn btn-block btn-primary btn-lg font-weight-medium auth-form-btn">登陆</button>
</div>
<div class="text-center mt-4 font-weight-light">
没有账号? <a href="/register" class="text-primary">去注册</a>
</div>
</form>
</div>
9.权限分配:
10.主页面:
普通权限:
管理权限:
11.前端识别程序UI设计:
12.签到记录:
12.修改信息页面:
1.启动django系统出现报错:
解决方法:
pip install mysqlclient
安装失败:
经过多方查询,最终解决方法为:
#项目(settings.py同级)目录中__init__.py中添加
import pymysql
pymysql.install_as_MySQLdb()
2.注册上传人脸图片报错:
解决方法:更改上传图片文件路径
3.上传人脸图片报错:
原因:CascadeClassifier的文件路径错误
近因为需要天津滨海新区的人口数据,看一看人口密度,了解哪些商圈聚集的人气最多,哪些居民区的常住人口最多,哪些重要的休闲娱乐地点是人们常去的。但是户籍人口在公安局,常住人口在街道,流动人口想要得到更是千难万难。很多时候苦于没有数据,就只能从公开数据下手。幸好生在互联网时代,运营商手机信令数据,公交卡数据,社交软件数据等提供了更多的选择。本文就介绍一下微博签到数据如何获取,直接说思路:
(1)注册微博开放平台。登陆微博开放平台http://open.weibo.com/,当然你先要有一个微博账号,完善开发者信息。通过审核后,进入微连接-网站接入,公司开发者可以使用微服务-粉丝服务(以前个人开发者也可以,现在提示“个人开发者只可创建微连接应用,不可创建微服务应用”),创建应用,然后在我的应用-接口管理-授权机制中,编辑“OAuth2.0 授权设置”,两项都可以设置为https://api.weibo.com/oauth2/default.html。这样,我们就可以在应用信息中找到App Key和App Secret,在爬虫中会用到。
(2)第二步,就是编写爬虫获取坐标位置周边的签到数据。首先引用的库中有一个微博的python SDK,可以在http://open.weibo.com/wiki/SDK下载。 引用的库,以及微博开放平台key
爬取数据部分,主要包含两块,一块是获取坐标周边微博POI信息,用到了place.nearby.pois接口;一块是查询每个POI的签到数,用到了place.pois.show接口。具体如下:
获取坐标周边的微博POI列表
获取每个POI的当日签到数
运行函数
获取的数据是json格式,提取数据十分方便。建议大家看看微博API各个接口的介绍,上面有参数和返回结果的示例。不过微博API接口文档最近好像有了改版,位置相关接口的介绍找不到了,但是我试了一下接口仍然可以用。
(3)那么小伙伴们就会问,我只知道我想查询的地点的名称,不知道坐标怎么办呢,那就需要用到高德开发平台(http://lbs.amap.com/),为什么不用百度的呢,因为微博开放平台的坐标系用的就是高德的。高德开放平台的坐标拾取工具(http://lbs.amap.com/console/show/picker)可以按地址名称查询坐标。
如果需要大批量的获取地名的坐标,还可以通过高德开放平台的API批量获取地名的坐标,获取POI数据,这个我们将在下一篇文章分享。
*请认真填写需求信息,我们会在24小时内与您取得联系。