ONBON預(yù)約禮包(10.24之前):https://www.wanyx.com/shoujigonglue/355388.html
七天連續(xù)簽到禮包(長(zhǎng)期):https://www.wanyx.com/shoujigonglue/355341.html
每周登錄禮包(長(zhǎng)期):https://www.wanyx.com/shoujigonglue/355298.html
國(guó)慶節(jié)Q幣禮包(10.26之前):https://www.wanyx.com/shoujigonglue/355180.html
每日星幣禮包(長(zhǎng)期):https://www.wanyx.com/shoujigonglue/355053.html
4399首發(fā)禮包(長(zhǎng)期):https://www.wanyx.com/shoujigonglue/355056.html
微信禮包(長(zhǎng)期):https://www.wanyx.com/shoujigonglue/354953.html
新手禮包(長(zhǎng)期):https://www.wanyx.com/shoujigonglue/354950.html
QQ瀏覽器禮包(10.30之前):https://www.wanyx.com/shoujigonglue/354945.html
隨著科技的進(jìn)步,人臉識(shí)別技術(shù)已經(jīng)深入到各個(gè)領(lǐng)域中。在教育、企業(yè)、會(huì)議等場(chǎng)合,傳統(tǒng)的簽到方式如手工簽名、刷卡等存在諸多問題,如容易丟失、容易被偽造等。因此,人臉識(shí)別簽到系統(tǒng)應(yīng)運(yùn)而生,為各類場(chǎng)合提供了更加便捷、高效的簽到方式。這種簽到方式不僅方便快捷,而且安全性更高,能夠有效地避免傳統(tǒng)簽到方式的弊端。基于人臉識(shí)別的簽到系統(tǒng)是利用WEB框架做人員管理,注冊(cè)錄入相關(guān)人員的信息,再利用攝像機(jī)采集現(xiàn)成人臉的靜態(tài)圖像,并通過(guò)定點(diǎn)方式檢測(cè)人臉特征中的關(guān)鍵信息,把所有信息存儲(chǔ)到數(shù)據(jù)庫(kù)中,最后用QT界面再終端進(jìn)行人臉識(shí)別用同樣的算法識(shí)別人臉并和數(shù)據(jù)庫(kù)中的人臉信息進(jìn)行比對(duì),來(lái)判斷參會(huì)人員是否為注冊(cè)人員。如果識(shí)別成功,系統(tǒng)將自動(dòng)完成簽到操作并將簽到記錄存儲(chǔ)在數(shù)據(jù)庫(kù)中。
后臺(tái):django
前端: html javascript
數(shù)據(jù)庫(kù):mysql
人臉檢測(cè)算法:dlib
人臉模型算法: 卷積神經(jīng)FACENET(pytorch、tensorflow實(shí)現(xiàn))
用戶表:
簽到記錄表:
話不多說(shuō),以下是部分實(shí)施過(guò)程,篇幅有限,有興趣的朋友可私信找我要項(xiàng)目全部代碼或者根據(jù)需要定制你想要的系統(tǒng):
1.安裝Django。您可以在終端或命令提示符下使用以下命令安裝最新版本的Django:
pip install django
#安裝'pymysql
pip install pymysql
2.創(chuàng)建Django項(xiàng)目。在終端或命令提示符下,轉(zhuǎn)到要?jiǎng)?chuàng)建項(xiàng)目的目錄,并運(yùn)行以下命令:
#其中,“HuiChang”是您想要為項(xiàng)目選擇的名稱。
#此命令將創(chuàng)建一個(gè)名為“HuiChang”的新目錄,
#并在其中創(chuàng)建一個(gè)名為“manage.py”的文件。
django-admin startproject HuiChang
3.創(chuàng)建應(yīng)用程序。應(yīng)用程序是Django項(xiàng)目的組成部分,每個(gè)應(yīng)用程序都可以包含特定于該應(yīng)用程序的視圖、模板和模型。在項(xiàng)目目錄中運(yùn)行以下命令以創(chuàng)建新的應(yīng)用程序
#其中,“app_huichang”是您想要為應(yīng)用程序選擇的名稱。
#此命令將創(chuàng)建一個(gè)名為“app_huichang”的新目錄,
#并在其中創(chuàng)建一個(gè)名為“models.py”的文件。
python manage.py startapp app_huichang
4.配置mysql數(shù)據(jù)庫(kù)。Django使用默認(rèn)的SQLite數(shù)據(jù)庫(kù)配置。在“settings.py”文件中,確保DATABASES設(shè)置為以下內(nèi)容:
# mysql 配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'douban',
'USER': '',
'PASSWORD': '',
'HOST': '',
'PORT': '',
'TEST':{
'CHARSET':'utf8',
'COLLATION':'utf8_general_ci'
},
}
}
5.數(shù)據(jù)庫(kù)創(chuàng)建
用戶權(quán)限表:
在app_huichang的新目錄里打開models.py,創(chuàng)建一個(gè)User、Role、Permission類,分別是用戶信息表、身份表、權(quán)限表。定義數(shù)據(jù)庫(kù)相關(guān)字段:
# 創(chuàng)建用戶表
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='會(huì)場(chǎng)', default="")
zuowei=models.CharField(max_length=32, verbose_name='座位',default="")
face_encoding=models.CharField(max_length=5000, verbose_name='人臉信息',default="")
# 與身份表的多對(duì)多外鍵字段,假設(shè)可以跨身份,跨部門
roles = models.ManyToManyField(to='Role')
def __str__(self):
return self.name
# 創(chuàng)建身份表
class Role(models.Model):
title = models.CharField(max_length=32, verbose_name='身份名稱')
# 和權(quán)限表的多對(duì)多關(guān)系字段,一個(gè)身份可以有多個(gè)權(quán)限,一個(gè)權(quán)限也可以被多個(gè)身份擁有
permissions = models.ManyToManyField(to='Permission')
def __str__(self):
return self.title
# 創(chuàng)建權(quán)限表
class Permission(models.Model):
name = models.CharField(max_length=32, verbose_name='權(quán)限名稱')
url = models.CharField(max_length=32, verbose_name='權(quán)限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='會(huì)場(chǎng)', default="")
zuowei = models.CharField(max_length=32, verbose_name='座位', default="")
Time= models.DateTimeField('簽到時(shí)間')
biaoshi=models.CharField(max_length=32, verbose_name='遲到標(biāo)志', default="")
6.在模型文件中定義完類后,需要配置模型,在項(xiàng)目的配置文件setting.py中修改INSTALLED_APPS 中添加應(yīng)用名稱"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文件中配置在后臺(tái)顯示的數(shù)據(jù)模型字段
admin.site.register(User)
admin.site.register(Role)
admin.site.register(Permission)
7.運(yùn)行遷移。在終端或命令提示符下,進(jìn)入項(xiàng)目目錄,并運(yùn)行以下命令以創(chuàng)建數(shù)據(jù)庫(kù)表格:
python manage.py makemigrations app_huichang
python manage.py migrate
創(chuàng)建超級(jí)管理員來(lái)修改用戶權(quán)限:
8.注冊(cè)功能:
<div class="auth-form-light text-left py-5 px-4 px-sm-5">
<div class="brand-logo">
<h1>人臉簽到系統(tǒng)</h1>
</div>
<h4>賬號(hào)注冊(cè)</h4>
<h6 class="font-weight-light">請(qǐng)輸入相關(guān)信息</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="賬號(hào)" 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="參會(huì)證號(hào)" 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="會(huì)場(chǎng)名" 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="座位號(hào)" 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="重復(fù)密碼">
{{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">注冊(cè)</button>
</div>
<div class="text-center mt-4 font-weight-light">
已有賬號(hào)? <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>人臉簽到系統(tǒng)</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="賬號(hào)">
</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">
沒有賬號(hào)? <a href="/register" class="text-primary">去注冊(cè)</a>
</div>
</form>
</div>
9.權(quán)限分配:
10.主頁(yè)面:
普通權(quán)限:
管理權(quán)限:
11.前端識(shí)別程序UI設(shè)計(jì):
12.簽到記錄:
12.修改信息頁(yè)面:
1.啟動(dòng)django系統(tǒng)出現(xiàn)報(bào)錯(cuò):
解決方法:
pip install mysqlclient
安裝失敗:
經(jīng)過(guò)多方查詢,最終解決方法為:
#項(xiàng)目(settings.py同級(jí))目錄中__init__.py中添加
import pymysql
pymysql.install_as_MySQLdb()
2.注冊(cè)上傳人臉圖片報(bào)錯(cuò):
解決方法:更改上傳圖片文件路徑
3.上傳人臉圖片報(bào)錯(cuò):
原因:CascadeClassifier的文件路徑錯(cuò)誤
近因?yàn)樾枰旖驗(yàn)I海新區(qū)的人口數(shù)據(jù),看一看人口密度,了解哪些商圈聚集的人氣最多,哪些居民區(qū)的常住人口最多,哪些重要的休閑娛樂地點(diǎn)是人們常去的。但是戶籍人口在公安局,常住人口在街道,流動(dòng)人口想要得到更是千難萬(wàn)難。很多時(shí)候苦于沒有數(shù)據(jù),就只能從公開數(shù)據(jù)下手。幸好生在互聯(lián)網(wǎng)時(shí)代,運(yùn)營(yíng)商手機(jī)信令數(shù)據(jù),公交卡數(shù)據(jù),社交軟件數(shù)據(jù)等提供了更多的選擇。本文就介紹一下微博簽到數(shù)據(jù)如何獲取,直接說(shuō)思路:
(1)注冊(cè)微博開放平臺(tái)。登陸微博開放平臺(tái)http://open.weibo.com/,當(dāng)然你先要有一個(gè)微博賬號(hào),完善開發(fā)者信息。通過(guò)審核后,進(jìn)入微連接-網(wǎng)站接入,公司開發(fā)者可以使用微服務(wù)-粉絲服務(wù)(以前個(gè)人開發(fā)者也可以,現(xiàn)在提示“個(gè)人開發(fā)者只可創(chuàng)建微連接應(yīng)用,不可創(chuàng)建微服務(wù)應(yīng)用”),創(chuàng)建應(yīng)用,然后在我的應(yīng)用-接口管理-授權(quán)機(jī)制中,編輯“OAuth2.0 授權(quán)設(shè)置”,兩項(xiàng)都可以設(shè)置為https://api.weibo.com/oauth2/default.html。這樣,我們就可以在應(yīng)用信息中找到App Key和App Secret,在爬蟲中會(huì)用到。
(2)第二步,就是編寫爬蟲獲取坐標(biāo)位置周邊的簽到數(shù)據(jù)。首先引用的庫(kù)中有一個(gè)微博的python SDK,可以在http://open.weibo.com/wiki/SDK下載。 引用的庫(kù),以及微博開放平臺(tái)key
爬取數(shù)據(jù)部分,主要包含兩塊,一塊是獲取坐標(biāo)周邊微博POI信息,用到了place.nearby.pois接口;一塊是查詢每個(gè)POI的簽到數(shù),用到了place.pois.show接口。具體如下:
獲取坐標(biāo)周邊的微博POI列表
獲取每個(gè)POI的當(dāng)日簽到數(shù)
運(yùn)行函數(shù)
獲取的數(shù)據(jù)是json格式,提取數(shù)據(jù)十分方便。建議大家看看微博API各個(gè)接口的介紹,上面有參數(shù)和返回結(jié)果的示例。不過(guò)微博API接口文檔最近好像有了改版,位置相關(guān)接口的介紹找不到了,但是我試了一下接口仍然可以用。
(3)那么小伙伴們就會(huì)問,我只知道我想查詢的地點(diǎn)的名稱,不知道坐標(biāo)怎么辦呢,那就需要用到高德開發(fā)平臺(tái)(http://lbs.amap.com/),為什么不用百度的呢,因?yàn)槲⒉╅_放平臺(tái)的坐標(biāo)系用的就是高德的。高德開放平臺(tái)的坐標(biāo)拾取工具(http://lbs.amap.com/console/show/picker)可以按地址名稱查詢坐標(biāo)。
如果需要大批量的獲取地名的坐標(biāo),還可以通過(guò)高德開放平臺(tái)的API批量獲取地名的坐標(biāo),獲取POI數(shù)據(jù),這個(gè)我們將在下一篇文章分享。
*請(qǐng)認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。