[畢業(yè)設(shè)計(jì)]2023-2024年最新最全計(jì)算機(jī)專業(yè)畢設(shè)選題推薦匯總
感興趣的可以先收藏起來,還有大家在畢設(shè)選題,項(xiàng)目以及論文編寫等相關(guān)問題都可以給我留言咨詢,希望幫助更多的人?。
1、項(xiàng)目介紹
Python語言、dlib、OpenCV、Pyqt5界面設(shè)計(jì)、sqlite3數(shù)據(jù)庫
方法實(shí)現(xiàn)、實(shí)現(xiàn)步驟
1、實(shí)例化人臉檢測模型、人臉關(guān)鍵點(diǎn)檢測模型、人臉識別模型
2、電腦攝像頭設(shè)備加載一對圖片
3、分別獲取圖片中的人臉圖片所映射的空間向量,即人臉特征值
4、計(jì)算特征向量歐氏距離,根據(jù)閾值判斷是否為同一個(gè)人
2、項(xiàng)目界面
(1)攝像頭人臉識別界面
(2)人臉識別記錄
(3)人臉錄入界面
(4)數(shù)據(jù)庫管理界面
(5)關(guān)于界面
3、項(xiàng)目說明
Python語言、dlib、OpenCV、Pyqt5界面設(shè)計(jì)、sqlite3數(shù)據(jù)庫
本系統(tǒng)使用dlib作為人臉識別工具,dlib提供一個(gè)方法可將人臉圖片數(shù)據(jù)映射到128維度的空間向量,如果兩張圖片來源于同一個(gè)人,那么兩個(gè)圖片所映射的空間向量距離就很近,否則就會很遠(yuǎn)。因此,可以通過提取圖片并映射到128維空間向量再度量它們的歐氏距離是否足夠小來判定是否為同一個(gè)人。
方法實(shí)現(xiàn)、實(shí)現(xiàn)步驟
1、實(shí)例化人臉檢測模型、人臉關(guān)鍵點(diǎn)檢測模型、人臉識別模型
2、電腦攝像頭設(shè)備加載一對圖片
3、分別獲取圖片中的人臉圖片所映射的空間向量,即人臉特征值
4、計(jì)算特征向量歐氏距離,根據(jù)閾值判斷是否為同一個(gè)人
開發(fā)技術(shù)環(huán)境: Pycharm + Python3.6 + PyQt5 + OpenCV + 人臉特征模型
本系統(tǒng)先調(diào)取opencv攝像頭進(jìn)行人臉信息拍照然后識別人臉特征數(shù)據(jù),并且錄入自己的學(xué)號姓名,將識別的人臉特征向量信息保存到人臉數(shù)據(jù)庫當(dāng)中產(chǎn)生數(shù)據(jù)記錄,并且可以按照學(xué)號搜索人臉數(shù)據(jù)庫當(dāng)中的學(xué)生信息,可以修改學(xué)生的姓名以及學(xué)號等,學(xué)生錄入進(jìn)自己的人臉信息后可以進(jìn)行人臉識別,人臉識別主要是調(diào)用opencv打開攝像頭拍攝自己的人臉然后調(diào)取人臉模型進(jìn)行識別,將識別到的人臉特征向量和人臉庫中的特征向量匹配并計(jì)算出相似度,如果匹配相似度太低則提示不存在請您先錄入人臉信息,匹配度達(dá)到百分七十以及八十以上則匹配出數(shù)據(jù)庫里面對應(yīng)的學(xué)生識別記錄,并且形成識別記錄,這個(gè)識別記錄也是可以搜索修改和刪除的。
4、部分代碼
from PyQt5.QtWidgets import QApplication
from PyQt5 import QtCore
from control.mainWindow import MyWindow
import sys
#PyQt使用高分辨率
QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling)
#主函數(shù)
if __name__ == '__main__':
app = QApplication(sys.argv)
#實(shí)例化主界面
myWin = MyWindow()
#顯示主界面
myWin.show()
sys.exit(app.exec_())
from datetime import datetime
import time
#find the course attend
def find_current_course(tableDict):
have_class = 0
course_name = None
classroom = None
start_time = None
end_time =None
late = 0
current_time = datetime.now().strftime("%H:%M")
current_week = int(time.strftime("%w"))
current_week_key = list(tableDict.keys())[current_week - 1]
today_course = tableDict[current_week_key]
if current_week in [0,6]:
print("None")
return have_class,course_name,classroom,start_time,end_time,late
else:
print(today_course)
min_diff_time = 24 * 60
for course in today_course:
if course != []:
if in_course_time(course[2],course[3],current_time):
print(in_course_time(course[2],course[3],current_time))
have_class = 1
course_name = course[0]
classroom = course[1]
start_time = course[2]
end_time = course[3]
late = 1
return have_class,course_name,classroom,start_time,end_time,late
else:
current_diff_time = diff_time(course[2],current_time)
if current_diff_time <= 0 and current_diff_time < min_diff_time:
min_diff_time = current_diff_time
print("min_time:{}".format(min_diff_time))
have_class = 1
course_name = course[0]
classroom = course[1]
start_time = course[2]
end_time = course[3]
late = 0
return have_class, course_name, classroom, start_time, end_time, late
print("None")
return have_class, course_name, classroom, start_time, end_time, late
print(current_time)
print(current_week)
# the difference of two time
def diff_time(time1,time2):
t1,m1 = int(time1.split(':')[0]), int(time1.split(':')[1])
t2, m2 = int(time2.split(':')[0]), int(time2.split(':')[1])
time1_min = t1 * 60 + m1
time2_min = t2 * 60 + m2
return time2_min - time1_min
#current time is in course time?
def in_course_time(start_time,end_time,current_time):
if diff_time(start_time,current_time) > 0 and diff_time(end_time,current_time) < 0:
return True
else:
return False
源碼獲取:
??由于篇幅限制,獲取完整文章或源碼、代做項(xiàng)目的,查看主頁【專欄名稱】或者【用戶名】或者頂部的【選題鏈接】就可以找到我獲取項(xiàng)目源碼學(xué)習(xí)啦~??文章來源:http://www.zghlxwxcb.cn/news/detail-764367.html
大家點(diǎn)贊、收藏、關(guān)注、評論啦 ! 文章來源地址http://www.zghlxwxcb.cn/news/detail-764367.html
到了這里,關(guān)于計(jì)算機(jī)畢業(yè)設(shè)計(jì):基于python人臉識別考勤系統(tǒng) OpenCV+Dlib(包含文檔+源碼+部署教程)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!