版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
基于人臉識(shí)別的考勤系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)目錄TOC\o"1-3"\h\u28574引言 26581設(shè)計(jì)任務(wù)及方案 458971.1設(shè)計(jì)任務(wù)及要求 479701.2系統(tǒng)設(shè)計(jì)方案 4232441.2.1人面考勤系統(tǒng)功能組成部分 4324141.3系統(tǒng)設(shè)計(jì)方案論證 4221821.3.1硬件平臺(tái)選用論證 4277191.3.2界面設(shè)計(jì)方案論證 5229461.3.3考勤信息存儲(chǔ)方案論證 5124221.3.4設(shè)計(jì)考慮因素 545911.3.5系統(tǒng)可實(shí)現(xiàn)目標(biāo) 6235742開(kāi)發(fā)軟件工具介紹 7280912.1概述 7155862.2ARM處理器介紹 7310622.3Linux系統(tǒng)介紹 7255202.4Ubuntu操作系統(tǒng)介紹 9115692.5QtCreator介紹 9163732.6SecureCRT介紹 10195183選用的開(kāi)發(fā)硬件 12297123.1GEC6818開(kāi)發(fā)平臺(tái) 125083.2選用的攝像頭 1431354軟件設(shè)計(jì) 15176194.1人臉檢測(cè)的實(shí)現(xiàn) 15314054.2人臉特征提取實(shí)現(xiàn) 15187644.3圖像采集功能實(shí)現(xiàn) 1782204.4人臉?shù)浫牍δ艿膶?shí)現(xiàn) 18230574.5實(shí)時(shí)顯示畫(huà)面并捕抓人臉功能實(shí)現(xiàn) 1976084.6考勤打卡功能的實(shí)現(xiàn) 20143694.7查看考勤的人員的信息功能 22191945系統(tǒng)調(diào)試 26301165.1調(diào)試步驟 26285995.2開(kāi)發(fā)板測(cè)試. 26266855.3軟件測(cè)試. 2729746結(jié)論 28摘要如今,許多的高校和企業(yè)將考勤系統(tǒng)納入其信息化管理體系中,其可為有效評(píng)估用戶出勤情況提供依據(jù)。在過(guò)去科學(xué)技術(shù)水平比較低的情況下,普遍采用點(diǎn)名、人工簽到等傳統(tǒng)考勤手段對(duì)考勤人員進(jìn)行考勤。隨著科學(xué)技術(shù)的發(fā)展和時(shí)代的進(jìn)步,逐漸出現(xiàn)了更為先進(jìn)的考勤手段,比如,使用磁卡、IC卡打卡考勤,相對(duì)于點(diǎn)名考勤、人工簽到考勤的效率得到了很大的提高。但是也存在較大的缺點(diǎn),即無(wú)法數(shù)據(jù)避免偽造、丟失、竊取或遺忘等重大問(wèn)題,考勤數(shù)據(jù)的真實(shí)有效性難以得到保證?;谌四樧R(shí)別的考勤系統(tǒng)不僅可以提高考勤的效率而且還可以解決上述問(wèn)題。本文主要對(duì)基于人臉識(shí)別的考勤系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)展開(kāi)研究。以QtCreator、sqlite數(shù)據(jù)庫(kù)和OpenCV庫(kù)為主要軟件開(kāi)發(fā)平臺(tái),硬件實(shí)現(xiàn)以GEC6818ARM開(kāi)發(fā)板為主要平臺(tái),以攝像頭為人臉圖像采集工具,對(duì)基于人面識(shí)別的考勤系統(tǒng)進(jìn)行設(shè)計(jì)。通過(guò)QtCreator進(jìn)行界面設(shè)計(jì),系統(tǒng)最終運(yùn)行在Linux系統(tǒng)上,通過(guò)點(diǎn)擊lcd屏幕上的指定功能按鈕實(shí)現(xiàn)人臉的錄入、考勤打卡、查看所有已打卡考勤人員的考勤記錄。關(guān)鍵字:人臉識(shí)別;考勤系統(tǒng);ARM;Qt;引言人臉識(shí)別技術(shù)與我們熟知的指紋識(shí)別技術(shù)一樣都是屬于生物識(shí)別技術(shù)。前者是基于人的面部特征信息進(jìn)行身份識(shí)別,后者是基于人的指紋信息進(jìn)行身份識(shí)別。另外,與其他的生物識(shí)別方法所不同的是人臉識(shí)別具有自然性,不被察覺(jué)性等特點(diǎn)。這里的自然性是指這一識(shí)別方式同人類進(jìn)行個(gè)體識(shí)別時(shí)所利用的生物特征相同。指紋識(shí)別以及其他的識(shí)別方式是具不具備有自然性這一特點(diǎn)的。不被察覺(jué)性使得識(shí)別過(guò)程不會(huì)讓人產(chǎn)生抵觸,而指紋識(shí)別過(guò)程通常會(huì)使用電子壓力傳感器或紅外線進(jìn)行指紋的采集,在采集指紋過(guò)程中可能會(huì)讓人們感到體驗(yàn)感不佳。但是相較于指紋識(shí)別,人臉識(shí)別技術(shù)更為復(fù)雜。隨著科技的深入發(fā)展,關(guān)于人臉識(shí)研究也不斷深入,且日益成熟??萍妓降奶岣呤沟萌四樧R(shí)別技術(shù)趨于成熟與完善,該技術(shù)的應(yīng)用領(lǐng)域得到了拓展。比如,金融、醫(yī)療、商業(yè)等領(lǐng)域都使用到了該技術(shù)。并且普遍存在于人們的日常生活中,校園里的自動(dòng)售貨機(jī)、超市里的自動(dòng)結(jié)算機(jī)、高鐵站的信息核驗(yàn)閘機(jī)等都運(yùn)用到了該項(xiàng)技術(shù)??茖W(xué)技術(shù)的高速發(fā)展,加快人類社會(huì)信息化的進(jìn)程并將人類社會(huì)帶入信息化時(shí)代。目前,大多數(shù)的企業(yè)、高校信都采取了信息化的管理模式。傳統(tǒng)的考勤的方式,比如點(diǎn)名考勤、簽字考勤等,不僅要占用額外的人力物力,而且占用額外的資源的同時(shí)考勤的效率普遍不高,傳統(tǒng)的考勤方式已經(jīng)不能滿足企業(yè)、高校的需求。伴隨科學(xué)技術(shù)發(fā)展而出現(xiàn)的其他的考勤手段也同樣存在較大的缺陷。人臉識(shí)別技術(shù)的不斷成熟,促進(jìn)了基于人面識(shí)別的考勤系統(tǒng)的誕生?;谌四樧R(shí)別的考勤系統(tǒng)成功解決了傳統(tǒng)考勤效率不高、耗費(fèi)較大人力物力、考勤數(shù)據(jù)偽造、被他人竊取或者被管理者不慎丟失、遺忘等諸多問(wèn)題??记诘臄?shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫(kù)中,利用數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)管理不僅給管理者帶來(lái)極大的管理方便,而且數(shù)據(jù)安全也得到了很大保障。由此可見(jiàn),基于人臉識(shí)別的考勤系統(tǒng)所具備的優(yōu)點(diǎn)是傳統(tǒng)考勤手段所不具備的。關(guān)于人臉識(shí)別的研究最早開(kāi)始于二十世紀(jì)六十年代,最先對(duì)這一項(xiàng)技術(shù)展開(kāi)研究的是日本和以美國(guó)為主的西方傳統(tǒng)科技強(qiáng)國(guó),這些國(guó)家都屬于世界級(jí)的科技強(qiáng)國(guó)。一直到了二十世紀(jì)的后期,我國(guó)才開(kāi)始研究人臉識(shí)別技術(shù)。在人臉識(shí)別技術(shù)這一領(lǐng)域的研究比國(guó)外晚了30~40年。全世界關(guān)于人臉識(shí)別的研究的過(guò)程可以分為以下4個(gè)階段:第一階段(一九六四年到一九九零年):最初階段研究重點(diǎn)主要集中在人的面部特征,仍未能自動(dòng)識(shí)別,即機(jī)械識(shí)別階段。第二階段(一九九一年到一九九七年):該階段研究重心上升到人工算法識(shí)別研究,即半自動(dòng)化識(shí)別。第三階段(一九九八年到二零一四年):第三階段重點(diǎn)研究魯棒性,比如姿態(tài)、光照等,即非接觸式識(shí)別。第四階段(二零一四年至今):互聯(lián)網(wǎng)應(yīng)用階段,會(huì)提檢驗(yàn)技術(shù)已經(jīng)成熟,人面識(shí)別技術(shù)被不斷應(yīng)用于互聯(lián)網(wǎng),在此階段人面識(shí)別技術(shù)已經(jīng)相當(dāng)成熟。國(guó)內(nèi)關(guān)于人臉識(shí)別技術(shù)領(lǐng)域研究的機(jī)構(gòu)單位比較多。最初,涉足該領(lǐng)域的進(jìn)行研究的大多是一些具備一定高等技術(shù)人才和科研實(shí)力的單位或高校。比如清華大學(xué)、廈門大學(xué)、中國(guó)科學(xué)院等機(jī)構(gòu)單位。這些機(jī)構(gòu)單位或者高校在該技術(shù)領(lǐng)域都取得了一定的研究成果。隨著近十幾年的信息科技的蓬勃發(fā)展,人工智能成為了科學(xué)社會(huì)界的另一熱議技術(shù)話題。人工智能的浪潮為人臉識(shí)別技術(shù)創(chuàng)造了前所未有的發(fā)展機(jī)遇,在良好的發(fā)展環(huán)境的促進(jìn)下人臉識(shí)別技術(shù)在各大應(yīng)用領(lǐng)域取得更大的成果。2014年中國(guó)香港中文大學(xué)的相關(guān)研究團(tuán)隊(duì)研發(fā)了一套精準(zhǔn)度極高的人臉識(shí)別系統(tǒng),該系統(tǒng)使用LWF數(shù)據(jù)庫(kù)進(jìn)行識(shí)別,準(zhǔn)確度高達(dá)99.15%[2]。據(jù)SooPat數(shù)據(jù)顯示,2018年,中國(guó)人臉識(shí)別行業(yè)專利申請(qǐng)量為3487項(xiàng),略高于2017年,公開(kāi)專利5200件,同比增長(zhǎng)了93%[]。隨著技術(shù)的不斷更新,如今我國(guó)人臉識(shí)別技術(shù)在保證高識(shí)別準(zhǔn)確度前提下識(shí)別的方法也越來(lái)越多樣化。與國(guó)內(nèi)相比,國(guó)外的人臉識(shí)別技術(shù)發(fā)展得更早,進(jìn)入領(lǐng)域進(jìn)行技術(shù)研究的主要是一些傳統(tǒng)的科技強(qiáng)國(guó),比如美日德等。且有研究表明,20世紀(jì)初日本已經(jīng)成功研制出的人體圖像識(shí)別系統(tǒng)能在一秒內(nèi)從3500人中識(shí)別出這個(gè)人[1]。2020年疫情期間日本的Gloory公司研發(fā)了一套可識(shí)別佩戴口罩人臉的人臉系統(tǒng)即使把半個(gè)臉遮住仍可被識(shí)別出來(lái)[1]。本文的組織如下:第1節(jié)描述設(shè)計(jì)任務(wù)方案并進(jìn)行方案論證,在第2、3部分對(duì)開(kāi)發(fā)軟件和硬件工具進(jìn)行介紹。第4闡述重要功能的實(shí)現(xiàn)過(guò)程。第5節(jié)為系統(tǒng)調(diào)試部分,闡述系統(tǒng)調(diào)試過(guò)程中遇到的問(wèn)題以及相應(yīng)的問(wèn)題解決策略。最后,第6節(jié)給出了結(jié)論。設(shè)計(jì)任務(wù)及方案設(shè)計(jì)任務(wù)及要求本次基于人面識(shí)別的考勤系統(tǒng)設(shè)計(jì)使用ARM開(kāi)發(fā)板作為主要的硬件實(shí)現(xiàn)平臺(tái),要求通過(guò)QtCreator進(jìn)行ui界面設(shè)計(jì)。運(yùn)行在Linux系統(tǒng)下的人面考勤系統(tǒng),通過(guò)點(diǎn)擊LCD液晶屏幕實(shí)現(xiàn)人臉的錄入、考勤打卡、查看所有已打卡的人員記錄等功能。設(shè)計(jì)應(yīng)滿足的要求如下所示:能夠?qū)崿F(xiàn)通過(guò)攝像頭采集人臉圖像數(shù)據(jù);能夠?qū)崿F(xiàn)人臉檢測(cè)識(shí)別;能夠記錄打卡人的信息;能夠記錄打卡時(shí)間;能夠查看已經(jīng)考勤的人員信息;系統(tǒng)設(shè)計(jì)方案本次設(shè)計(jì)的人面考勤系統(tǒng)要求具備界面簡(jiǎn)潔、損耗低、操作使用簡(jiǎn)單等基本特點(diǎn)。除此之外,系統(tǒng)需要有供用戶進(jìn)行人機(jī)交互的LCD液晶屏幕;要求采用具有損耗低、處理效率高特點(diǎn)的處理芯片;由于本系統(tǒng)是基于嵌入式的操作系統(tǒng)進(jìn)行開(kāi)發(fā)。因此,嵌入式的操作系統(tǒng)是必不可少的。人機(jī)交互的界面設(shè)計(jì)要求簡(jiǎn)介且友好,要能夠?yàn)橛脩籼峁┍容^良好的控制界面,帶給用戶舒適的使用體驗(yàn),還能讓用過(guò)戶直觀地感受到系統(tǒng)地當(dāng)前工作狀態(tài)。考勤記錄作為出勤評(píng)估的重要依據(jù),考勤信息的存儲(chǔ)方式要安全可靠。人面考勤系統(tǒng)功能組成部分本次設(shè)計(jì)的人臉考勤系統(tǒng)應(yīng)有四個(gè)重要的功能,即實(shí)時(shí)顯示畫(huà)面功能、人臉?shù)浫牍δ?、考勤打卡功能、查看已打卡人員信息功能。在人臉?shù)浫霑r(shí)點(diǎn)擊錄入人臉功能按鈕實(shí)現(xiàn)人臉的錄入;考勤的人員在進(jìn)行考勤時(shí)通過(guò)點(diǎn)擊考勤按鈕進(jìn)行打卡考勤,前提是在打卡在此之前已經(jīng)錄入過(guò)待考勤人員的人臉,否則無(wú)法進(jìn)行打卡考勤;依次類推,查看已經(jīng)打卡考勤的考勤記錄則只需要點(diǎn)擊查看按鈕查看打卡信息;如用戶不能確定是否打卡或者想確認(rèn)一下確實(shí)已經(jīng)打卡成功,可以通過(guò)查看功能核實(shí)。系統(tǒng)設(shè)計(jì)方案論證硬件平臺(tái)選用論證該人面考勤系統(tǒng)基于人臉識(shí)別,人臉識(shí)別實(shí)現(xiàn)的過(guò)程需要依賴opencv函數(shù)庫(kù)提供的函數(shù)接口,封裝好的函數(shù)接口實(shí)現(xiàn)過(guò)程涉及大量的數(shù)學(xué)運(yùn)算。選用的平臺(tái)需要具備較好的運(yùn)算能力,搭載有高性能、低功耗的處理器。本次選用的gec6818平臺(tái)搭載的處理器為Cotex-A53arm處理器,主頻可達(dá)1.4GHz,且配備有較大尺寸的LCD觸摸屏符合設(shè)計(jì)需求。在符合設(shè)計(jì)需要的前提下,選該平臺(tái)的可降低實(shí)際的成本。界面設(shè)計(jì)方案論證方案一:使用純C語(yǔ)言編寫設(shè)計(jì)本系統(tǒng)設(shè)計(jì)中設(shè)計(jì)涉及到許多的功能按鍵,使用純C語(yǔ)言設(shè)計(jì)也可以實(shí)現(xiàn)。通過(guò)打開(kāi)觸摸屏,獲取指定的觸摸屏事件后進(jìn)行相應(yīng)的動(dòng)作即可實(shí)現(xiàn)。編寫過(guò)程靈活,簡(jiǎn)單,對(duì)開(kāi)發(fā)這的編程水平要求較低不需要掌握其他的編程語(yǔ)言。但是實(shí)現(xiàn)過(guò)程的代碼量較多,設(shè)計(jì)出來(lái)的界面也會(huì)很單調(diào),采用純C語(yǔ)言進(jìn)行界面設(shè)計(jì)不夠便捷。 方案二:使用QTCreator軟件設(shè)計(jì)QtCreator是一套用戶界面應(yīng)用程序并且面向?qū)ο蟮目蚣?。在界面設(shè)計(jì)開(kāi)發(fā)領(lǐng)域中經(jīng)常會(huì)被使用到,里面提供類了大量用于界面設(shè)計(jì)的類和靜態(tài)成員函數(shù)。使用該軟件進(jìn)行界面設(shè)計(jì)相比較于使用純C語(yǔ)言設(shè)計(jì)更加的靈活簡(jiǎn)單,代碼量更少且設(shè)計(jì)出的界面會(huì)更加豐富多彩。綜上所述,選用QtCreator進(jìn)行界面的設(shè)計(jì)會(huì)更加簡(jiǎn)單便捷,界面的人性化也更佳??记谛畔⒋鎯?chǔ)方案論證方案一:使用文本文件存儲(chǔ)日常的軟件開(kāi)發(fā)中對(duì)于一些保密性要求不高的信息可以使用將信息寫入文本文件存儲(chǔ)的方式。對(duì)使用文本文件存儲(chǔ)的信息進(jìn)行修改時(shí)不受文件權(quán)限限制,通用性、跨平臺(tái)性比較高。但是存儲(chǔ)的數(shù)據(jù)的安全難以得到保障,很容易被他人竊取、修改并且數(shù)據(jù)量較大的情況下進(jìn)行信息查詢的難度較大。方案二:使用Sqlite數(shù)據(jù)庫(kù)存儲(chǔ)使用QSqlite數(shù)據(jù)庫(kù)進(jìn)行信息的存儲(chǔ)可保證數(shù)據(jù)的安全性,可對(duì)重要文件進(jìn)行加密保護(hù),對(duì)信息的進(jìn)行增刪改查比較方便。在開(kāi)發(fā)過(guò)程中能夠很方便地將其以任意的形式嵌入到其他的應(yīng)用程序當(dāng)中,且后期的維護(hù)也相對(duì)簡(jiǎn)單。與其他的數(shù)據(jù)卡相比Sqlite數(shù)據(jù)庫(kù)具有體積小、便于安裝移植的特點(diǎn)。綜上所述,使用數(shù)據(jù)庫(kù)進(jìn)行信息進(jìn)行存儲(chǔ)明顯更優(yōu)于使用文本文件進(jìn)行存儲(chǔ)。設(shè)計(jì)考慮因素在設(shè)計(jì)的過(guò)程中有許多的實(shí)際因素是很值得去注意,本次的考勤系統(tǒng)的設(shè)計(jì)應(yīng)特別注意以下幾個(gè)因素:1.擴(kuò)展性:為了滿足企業(yè)和一些高校信息化管理的更多需求,考勤系統(tǒng)的可擴(kuò)展性不應(yīng)被忽視;2.成本問(wèn)題:該考勤系統(tǒng)界面基本是各類的功能按鈕占據(jù)。這些按鍵在qt設(shè)計(jì)中屬于QPushBtton類,是使用qt軟件進(jìn)行界面設(shè)計(jì)過(guò)程中最為常用的類之一,在開(kāi)發(fā)板實(shí)現(xiàn)qt按鍵類可以讓本系統(tǒng)具備低成本、容易操作的特點(diǎn);3.簡(jiǎn)單性原則:即要求系統(tǒng)界面簡(jiǎn)潔,使用簡(jiǎn)單,不可過(guò)于復(fù)雜。過(guò)于復(fù)雜則可能造成用戶使用困難的問(wèn)題,進(jìn)而影響到考勤的效率,達(dá)不到企業(yè)高校提高考勤效率的要求。4.穩(wěn)定性:在非極端的環(huán)境下,系統(tǒng)能正常地工作,不會(huì)出現(xiàn)機(jī)器故障。5.識(shí)別準(zhǔn)確:本此設(shè)計(jì)的考勤系統(tǒng)不僅要求具有良好的穩(wěn)定性還要求具備較好的識(shí)別準(zhǔn)確率。不要求可以像國(guó)內(nèi)某些在人臉識(shí)別領(lǐng)域具有雄厚的科研實(shí)力的公司研發(fā)的人臉考勤系統(tǒng)那樣具有非常高,甚至接近百分百得識(shí)別準(zhǔn)確率。但是,應(yīng)該達(dá)到基本要求,不會(huì)出現(xiàn)嚴(yán)重的識(shí)別錯(cuò)誤。系統(tǒng)可實(shí)現(xiàn)目標(biāo)能夠利用QtCreator軟件和C++編程語(yǔ)言進(jìn)行開(kāi)發(fā);運(yùn)行在linux下系統(tǒng)中;界面設(shè)計(jì)簡(jiǎn)潔友好,能夠給用戶帶來(lái)良好的使用體驗(yàn);能夠通過(guò)實(shí)時(shí)顯示畫(huà)面;能夠通過(guò)攝像頭采集人臉圖像;能夠進(jìn)行人臉的錄入;能夠?qū)崿F(xiàn)人臉的檢測(cè)識(shí)別通過(guò)查看按鈕查看已考勤的人員信息;以ARM開(kāi)發(fā)板為主要的硬件實(shí)現(xiàn)平臺(tái);開(kāi)發(fā)軟件工具介紹概述要想順利的完成本次的畢業(yè)設(shè)設(shè)計(jì),對(duì)所使用到的開(kāi)發(fā)工具以及與其相關(guān)的知識(shí)進(jìn)行整體性的了解是非常有必要的。接下來(lái),將在本章節(jié)對(duì)完成本次設(shè)計(jì)的開(kāi)發(fā)工具包括處理器、操作系統(tǒng)、界面設(shè)計(jì)軟件、串口調(diào)試軟件等進(jìn)行相關(guān)介紹。ARM處理器介紹在本次設(shè)計(jì)中使用到了具備高性能、低功耗的ARM開(kāi)發(fā)板。ARM的含義其實(shí)是指ARM公司或者ARM處理器。ARM處理器的相關(guān)知識(shí)是作為嵌入式開(kāi)發(fā)者或嵌入式技術(shù)初學(xué)者應(yīng)了解掌握的基礎(chǔ)知識(shí)。ARM處理器由英國(guó)一家名為Acorn的公司設(shè)計(jì)的RPSC微處理器,處理器為32位,同時(shí)配備了16位指令集。該處理器因其具有功耗相對(duì)較小、體積小、成本較低、性能高等優(yōu)良特點(diǎn)而聞名世界。在現(xiàn)實(shí)生活中ARM系列處理器的種類很多的。這是因?yàn)槭澜绺鲊?guó)的公司在得到arm公司的授權(quán)后,在原有的架構(gòu)的基礎(chǔ)之上進(jìn)行了一些調(diào)整,生產(chǎn)出能夠滿足自身或者客戶需求的處理器。這些處理器被應(yīng)用于不同的領(lǐng)域并且發(fā)揮著很重要的作用。但是它們并不是全新研發(fā)出來(lái)的,因?yàn)樗鼈兊捏w系結(jié)構(gòu)仍為ARM的體系結(jié)構(gòu)。比如,SecureCore系列、intel公司的Xscale系列、StrongARM系列等都是基于arm公司的處理器的結(jié)構(gòu)體系研發(fā)出來(lái)的。目前,嵌入式行業(yè)中比較普遍看到的arm系列處理器有arm7系列、arm9系列至arm11系列、Cortex系列以及上述提到的幾個(gè)系列。Cortex系列的由來(lái)是arm11系列以后arm系列處理器更改名稱而來(lái)的。該系列又分Cortex-A、Cortex-R、Cortex-M系列,每一種之中又細(xì)分有其他系列。本次設(shè)計(jì)的使用硬件設(shè)備平臺(tái)采用的是處理器屬于Cotex-A系列中的53系列。該系列的處理器在眾多的應(yīng)用處理器當(dāng)中屬于功耗效率最高的的那一款。除此之外,也是全球所有64位處理器當(dāng)中最小的。它的誕生進(jìn)一步鞏固了arm處理器在低功耗高性能領(lǐng)域的領(lǐng)先地位。同時(shí),其所具備的特點(diǎn)也是前幾個(gè)系列的處理器所無(wú)法比擬的。Linux系統(tǒng)介紹Linux操作系統(tǒng)是類Unix、可免費(fèi)使用和自由傳播的操作系統(tǒng)。與Window系統(tǒng)相比,Linux系統(tǒng)具有開(kāi)放性、使用免費(fèi)的特點(diǎn),文件格式也不同于Window系統(tǒng)的文件格式。其中開(kāi)放性是指源碼開(kāi)放,用戶可以對(duì)其內(nèi)部的源代碼進(jìn)行編輯,這一特點(diǎn)是其他操作系統(tǒng)所不具備的。Linux系統(tǒng)是一種支持多用戶、多任務(wù)、多線程、多cpu的操系統(tǒng)??蛇\(yùn)行UNIX工具軟件、應(yīng)用程序以及網(wǎng)絡(luò)協(xié)議,兼容性特別強(qiáng)。Linux系統(tǒng)的內(nèi)核在1991年10月15日被林納斯.本納迪克特.托瓦茲發(fā)布。發(fā)行的版本有很多,比如,較為被IT行業(yè)從事者熟知的RehatLimux(紅帽)、DebainLinux、RedFlagLinux等。它是許多嵌入式行業(yè)從業(yè)者進(jìn)行開(kāi)發(fā)的必備工具之一,是學(xué)習(xí)嵌入式技術(shù)過(guò)程中必定要學(xué)習(xí)的軟件工具。在本次的設(shè)計(jì)中,代碼的編寫和工程的交叉編譯都依賴于Linux操作系統(tǒng)。只有對(duì)其有一定的了解并且掌握一定的Linux基礎(chǔ)知識(shí)才有可能完成本次的設(shè)計(jì)任務(wù)。Ubuntu操作系統(tǒng)介紹Ubuntu中文名為“烏班圖”,Ubuntu操作系統(tǒng)其實(shí)就是前面介紹的Linux的另一發(fā)行版本。該名稱源自于非洲魯語(yǔ)中的”Ubuntu”,另一說(shuō)法是源自于豪薩語(yǔ)。其深刻的內(nèi)在含義是“人性”,代表著非洲不同于其地區(qū)的傳統(tǒng)價(jià)值觀。Ubuntu系統(tǒng)具有如下特點(diǎn)文件管理效率高,通常情況下不需要碎片整理。系統(tǒng)垃圾少,不會(huì)像Windows系統(tǒng)那樣由于文件占有內(nèi)存過(guò)多,使用時(shí)間長(zhǎng)以后等原因出現(xiàn)卡頓。系統(tǒng)中的文件不會(huì)占有到電腦的內(nèi)存。文件的拷貝速度快,能高達(dá)到20M/s,比win10系統(tǒng)的5M/s高出很多。系統(tǒng)的安全性穩(wěn)定性好,漏洞修補(bǔ)也很快,不容易感染病毒;文件的權(quán)限管理非常嚴(yán)格,這樣極大避免了用過(guò)戶誤操作情況的出現(xiàn);開(kāi)源免費(fèi)正版,不存在盜版這個(gè)說(shuō)法;擁有強(qiáng)大的命令行,可通過(guò)腳本命令行執(zhí)行幾乎所有的操作等等。使用Ubuntu操作系統(tǒng)時(shí),需要將其搭建虛擬機(jī)中,并配置相應(yīng)的資源環(huán)境。Ubuntu系統(tǒng)平均每半年會(huì)有新的版本發(fā)行。通常,相關(guān)的IT行業(yè)從業(yè)者或者日常的嵌入式教學(xué)更多的是使用偶數(shù)+04版本的,比如Ubuntu16.04、Ubuntu18.04,奇數(shù)號(hào)版本的烏班圖系統(tǒng)很少被使用。這是因?yàn)榕紨?shù)號(hào)版本的ubuntu內(nèi)核是“穩(wěn)定”的內(nèi)核,而奇數(shù)號(hào)版本的ubuntu內(nèi)核則是“發(fā)展中”或前沿的內(nèi)核。在本次設(shè)計(jì)中,由于之前安裝的是Ubuntu18.04版本,因此就直接使用了18.04版本的烏班圖。其實(shí),只要滿足設(shè)計(jì)的需要可以根據(jù)個(gè)人的喜好進(jìn)行選擇。Ubuntu18.04系統(tǒng)界面如下REF_Ref97466531\h圖21所示圖STYLEREF1\s2SEQ圖\*ARABIC\s11Ubuntu18.04界面QtCreator介紹QtCreator是具備跨平臺(tái)特點(diǎn)的QtIDE,是一套圖形用戶界面應(yīng)用程序并且面向?qū)ο蟮目蚣堋1举|(zhì)上是一個(gè)框架也是一套代碼庫(kù)。使用的計(jì)算機(jī)編程語(yǔ)言主要為C++編程語(yǔ)言和少量的C語(yǔ)言。Qt庫(kù)中提供了大量利用C++編寫的類,和靜態(tài)函數(shù)接口。這樣可有效減避免了開(kāi)發(fā)過(guò)程中某一個(gè)功能模塊的代碼重復(fù)編寫,使得程序冗余性降低。減少開(kāi)發(fā)者的工作量。它支持GUI程序的開(kāi)發(fā),也支持比如控制臺(tái)工具和服務(wù)器等非GUI程序的開(kāi)發(fā)。其顯著的跨平臺(tái)性強(qiáng)的特點(diǎn)主要體現(xiàn)在該軟件能夠在windos、arm、iOS、android等開(kāi)發(fā)平臺(tái)上運(yùn)行。比如,本次設(shè)計(jì)使用到的qt軟件是安裝在筆記本的Ubuntu系統(tǒng)之中,另外在筆記本電腦的widows系統(tǒng)也安裝有該軟件,同樣也可以使用。在本次的設(shè)計(jì)中QtCreator擔(dān)起了界面設(shè)計(jì)和功能代碼編寫的重任。REF_Ref97933791\h圖22為QtCreator軟件。圖STYLEREF1\s2SEQ圖\*ARABIC\s12QtCreator軟件界面SecureCRT介紹本次使用的串口調(diào)試工具為SecureCRT應(yīng)用程序,它是終端模擬真實(shí)的重要軟件。除了支持常見(jiàn)的ssh協(xié)議以外,還支持Telnet和rlogin協(xié)議,可用來(lái)連接運(yùn)行Windows、UNIX以及VMS。如果要對(duì)加密文件進(jìn)行傳輸,則需要使用到其內(nèi)部包含的VCP命令行程序。利用USB串口連接將電腦與gec6818開(kāi)發(fā)板進(jìn)行連接,接著在SecureCRT軟件進(jìn)行資源的配置,包括網(wǎng)絡(luò)協(xié)議、端口號(hào)、波特率、數(shù)據(jù)位、流控等進(jìn)行選擇。如REF_Ref97466462\h圖23所示。最后點(diǎn)擊連接即可進(jìn)行后續(xù)包括文件傳輸?shù)介_(kāi)發(fā)板、文件權(quán)限修改、運(yùn)行在Ubuntu系統(tǒng)生成可執(zhí)行二進(jìn)制文件等操作。圖STYLEREF1\s2SEQ圖\*ARABIC\s13SecureCRT資源的配置圖選用的開(kāi)發(fā)硬件GEC6818開(kāi)發(fā)平臺(tái)本設(shè)計(jì)使用armgec6818開(kāi)發(fā)板作為主要的硬件實(shí)現(xiàn)平臺(tái)。為了確保平臺(tái)的穩(wěn)定性和可靠性采用了10層板工藝設(shè)計(jì),搭載arm版本的CortexA-53系列的八核S5P6818高性能處理器,最高主頻可高達(dá)1.4GHZ。具備以下的優(yōu)良特性尺寸最佳,核心板的尺寸僅為75mn*55mn,體積雖小但能保證足夠的GPIO口;電源管理設(shè)計(jì)采用AXP228PMU,在保證工作的穩(wěn)定性和可靠性之下,成本是相當(dāng)?shù)土?;支持多品牌多容量的emmc;采用單通道DDR3設(shè)計(jì);可電源休眠喚醒;支持的三大嵌入式操作系統(tǒng),即Linux、安卓、Ubuntu;板載千兆有線以太網(wǎng)等??捎糜诙喾N嵌入式實(shí)驗(yàn)教學(xué),比如嵌入式驅(qū)動(dòng)實(shí)驗(yàn)、多媒體實(shí)驗(yàn)、Android實(shí)驗(yàn)、網(wǎng)絡(luò)實(shí)驗(yàn)等。因其可支持許多的嵌入式實(shí)驗(yàn)教學(xué)而深受某些本科院校和嵌入式技術(shù)學(xué)習(xí)者的喜愛(ài)。gec6818開(kāi)發(fā)板如REF_Ref95601920\h圖31所示,核心板如REF_Ref95601969\h圖32所示圖STYLEREF1\s3SEQ圖\*ARABIC\s11gec6818開(kāi)發(fā)板圖STYLEREF1\s3SEQ圖\*ARABIC\s12gec6818開(kāi)發(fā)板核心板核心板提供有較多的外部設(shè)配適配和硬件接口,支持千兆以太網(wǎng)、板載VGA接口、HDMI接口、USB接口等,GEC6818部分接口參數(shù):(1)LCD接口:同時(shí)支持TTL.LVD5.NP接口輸出;(2)Touch接口:電容觸摸,可以使用USB或者擴(kuò)展電阻觸摸;(3)音頻接口:AC97/IIS接口,支持錄放音;(4)SD卡接口:2路SDIO輸出通道;(5)以太網(wǎng)接口:支持千兆以太網(wǎng);(6)HDMI接口:音視頻輸出接口,同步音視頻輸出(7)VGA接口:使用輸出接口拓展;(8)Camera接口:1路CIF,1路MIP輸出;(9)啟動(dòng)配置接口:無(wú)需啟動(dòng)配置,核心板可自行適配;(10)emmc接口:板載emmc接口,管腳不再其他引出。選用的攝像頭本次使用的攝像頭為UBS攝像頭,配備高速USB2.0,采用v4l2架構(gòu)。通過(guò)opencv庫(kù)攝像頭進(jìn)行圖像的采集。在本次設(shè)計(jì)中對(duì)選用的USB攝像頭并無(wú)過(guò)多的要求,任意選擇一款能滿足需求的即可。本此設(shè)計(jì)選用的USB攝像頭如REF_Ref96954414\h圖33所示。圖STYLEREF1\s3SEQ圖\*ARABIC\s13UBS攝像頭Linux中攝像頭應(yīng)用程序訪問(wèn)攝像頭設(shè)備的過(guò)程如REF_Ref97466236\h圖34所示。具體過(guò)程:攝像頭app通過(guò)系統(tǒng)調(diào)用接口訪問(wèn)v4l2驅(qū)動(dòng)框架,驅(qū)動(dòng)框架提供一個(gè)接口訪問(wèn)視頻設(shè)備驅(qū)動(dòng),通過(guò)視頻設(shè)備驅(qū)動(dòng)訪問(wèn)攝像頭。視頻設(shè)備初始化的過(guò)程視頻設(shè)備被注冊(cè)到v4l2框架中,將視頻設(shè)備添加到v4l2框架維護(hù)的一個(gè)對(duì)列中,這樣v4l2驅(qū)動(dòng)框架就可以通過(guò)隊(duì)列找設(shè)備,再通過(guò)設(shè)備找到驅(qū)動(dòng)進(jìn)而訪問(wèn)到攝像頭圖STYLEREF1\s3SEQ圖\*ARABIC\s14攝像頭應(yīng)用程序訪問(wèn)攝像頭流程圖軟件設(shè)計(jì)人臉檢測(cè)的實(shí)現(xiàn)人臉檢測(cè)是指通過(guò)確定人臉在圖像中的大小與位置解決“人臉在哪里”的問(wèn)題。將在圖像中確定好的人臉圖裁剪下來(lái),以便于后續(xù)進(jìn)行人臉特征分析與人臉識(shí)別。通常,在許多的基于人臉識(shí)別的考勤機(jī)或者人臉核驗(yàn)機(jī)中,可以看到在屏幕上被檢測(cè)到的人臉會(huì)被一個(gè)矩形框框起。實(shí)現(xiàn)原理:調(diào)用人臉檢測(cè)API接口實(shí)現(xiàn)人臉檢測(cè)功能。實(shí)現(xiàn)過(guò)程:定義一個(gè)rockx_handle_t型的人臉檢測(cè)模塊然后利用rockx_create函數(shù)初始化相應(yīng)的人臉檢測(cè)模塊,初始化的過(guò)程中需要添加用于人臉檢測(cè)的神經(jīng)網(wǎng)絡(luò)。進(jìn)行不同的物體識(shí)別使用到的函數(shù)接口不一樣,使用到的神經(jīng)網(wǎng)絡(luò)接口也不一樣。如果進(jìn)行車牌檢測(cè)就添加檢測(cè)車牌的對(duì)應(yīng)神經(jīng)網(wǎng)絡(luò),進(jìn)行人臉識(shí)別就要添加用于人臉檢測(cè)的神經(jīng)網(wǎng)絡(luò)。神經(jīng)網(wǎng)絡(luò)是人臉是別過(guò)程中的關(guān)鍵所在,沒(méi)有添加正確的神經(jīng)網(wǎng)絡(luò)人臉識(shí)別就無(wú)法成功進(jìn)行。最后利用rockx_face_detect函數(shù)接口對(duì)輸入的圖像進(jìn)行人臉的檢測(cè)。人臉檢車代碼如下:rockx_handle_tface_det_handle;ret=rockx_create(&face_det_handle,ROCKX_MODULE_FACE_DETECTION,nullptr,0);if(ret!=ROCKX_RET_SUCCESS){printf("initrockxmoduleROCKX_MODULE_FACE_DETECTIONerror%d\n",ret);return-1;}//detectface把檢測(cè)到的人面存放在數(shù)組中ret=rockx_face_detect(face_det_handle,in_image,&face_array,nullptr);if(ret!=ROCKX_RET_SUCCESS){printf("rockx_face_detecterror%d\n",ret);return-1;}人臉特征提取實(shí)現(xiàn)人臉特征提取是指利用人臉圖像的灰度信息,通過(guò)特定的數(shù)學(xué)算法提取人臉的局部或者全局的特征。其中,LBP算法是人臉識(shí)別技術(shù)領(lǐng)域中較為普遍使用的人臉特征提取算法之一。特征提取是進(jìn)行人臉識(shí)別的關(guān)鍵性的一步。人臉特征提取是進(jìn)行人臉識(shí)別過(guò)程中最為重要的一個(gè)環(huán)節(jié)之一,是人臉識(shí)別成功的前提。如果無(wú)法從圖片中提取到人臉特征就無(wú)法進(jìn)行人臉識(shí)別。實(shí)現(xiàn)原理:使用rockx_face_recognize函數(shù)接口進(jìn)行特人臉征提取。具體實(shí)現(xiàn)過(guò)程:同樣地,進(jìn)行特征提取前要定義一個(gè)人臉提取模塊并初始化。然后,對(duì)輸入的圖像進(jìn)行人臉檢測(cè),并獲取最大的人臉圖。接著,利用rockx_face_align函數(shù)接口從攝像頭采集到的圖片中截取人臉圖。最后,利用rockx_face_recognize函數(shù)接口對(duì)截取到人臉圖像進(jìn)行人臉的特征提取,輸出結(jié)果保存到rockx_face_feature_t類型的變量中存儲(chǔ)起來(lái)以便于后續(xù)人臉識(shí)別過(guò)程的最后一步特征對(duì)比使用。特征提取過(guò)程如REF_Ref96941961\h圖41所示圖STYLEREF1\s4SEQ圖\*ARABIC\s11特征提取流程圖人臉特征提取主要代碼如下:intrun_face_recognize(rockx_image_t*in_image,rockx_face_feature_t*out_feature){rockx_ret_tret;rockx_object_array_tface_array;//創(chuàng)建一個(gè)人面檢查數(shù)組memset(&face_array,0,sizeof(rockx_object_array_t));ret=rockx_face_detect(face_det_handle,in_image,&face_array,nullptr);if(ret!=ROCKX_RET_SUCCESS){printf("rockx_face_detecterror%d\n",ret);return-1;}rockx_object_t*max_face=get_max_face(&face_array);if(max_face==NULL){return-1;}memset(&out_img,0,sizeof(rockx_image_t));ret=rockx_face_align(face_5landmarks_handle,in_image,&(max_face->box),nullptr,&out_img);if(ret!=ROCKX_RET_SUCCESS){return-1;}rockx_face_recognize(face_recognize_handle,&out_img,out_feature);intleft=max_face->box.left;//0box=(8063168195)inttop=max_face->box.top;intright=max_face->box.right;intbottom=max_face->box.bottom;rockx_image_draw_rect(in_image,{left,top},{right,bottom},{255,0,0},3);return0;}圖像采集功能實(shí)現(xiàn)攝像頭采集圖片功能相對(duì)于其他的功能而言顯得比較簡(jiǎn)單。功能實(shí)現(xiàn)過(guò)程:首先,打開(kāi)攝像頭。打開(kāi)攝像前應(yīng)先查看攝像頭設(shè)備的設(shè)備號(hào),一般在開(kāi)發(fā)板的dev目錄下查看。接著,定義一個(gè)Mat類型的變量。在程序中編寫“capture>>變量名”形式的代碼即可實(shí)現(xiàn)圖片的采集并存入變量中。圖像采集代碼如下:VideoCapturecapture;capture.open(6);//攝像設(shè)備號(hào)是6if(!capture.isOpened()){cout<<"rgbcapturecannotopen"<<endl;exit(-1);}capture>>raw_frame;人臉?shù)浫牍δ艿膶?shí)現(xiàn)錄入獲取到的人臉時(shí)要求提供有正在錄入人臉的人員的姓名。實(shí)現(xiàn)過(guò)程:點(diǎn)擊人臉?shù)浫氚粹o進(jìn)行人臉?shù)浫霑r(shí)定時(shí)器就會(huì)停止,用于實(shí)時(shí)顯示畫(huà)面的QLabel標(biāo)簽不會(huì)再顯示動(dòng)態(tài)的畫(huà)面,而是只顯示一張包含有人臉的圖像,在小標(biāo)簽中顯示檢測(cè)到的人臉小圖即從大圖中截取到的人臉圖像,并彈出一個(gè)對(duì)話框以供輸入錄入人臉的人員輸入姓名。對(duì)話框使用QInputDialog類進(jìn)行設(shè)計(jì),輸入姓名后點(diǎn)擊對(duì)話框上的OK按鈕確定人臉的錄入,錄入成功后取出的人臉圖片會(huì)以JPG圖片的格式保存。如果不想繼續(xù)進(jìn)行人臉的錄入,點(diǎn)擊Cancel按鈕取消錄入人臉對(duì)話框自動(dòng)隱藏。人臉?shù)浫虢缑嫒鏡EF_Ref95602001\h圖42所示圖STYLEREF1\s4SEQ圖\*ARABIC\s12人臉?shù)浫虢缑鎴D人臉?shù)浫氪a如下voidMainWindow::on_pushButton_clicked(){//關(guān)閉定時(shí)器t->stop();QStringtext=QInputDialog::getText(this,tr("請(qǐng)輸入錄入人名"),tr("Username:"));QStringname=QString("./face/%1.jpg").arg(text);//保存取出的人面圖片**rockx_image_write(name.toUtf8().data(),&out_img);QPixmappic(name);pic=pic.scaled(ui->label_2->width(),ui->label_2->height());ui->label_2->setPixmap(pic);t->start(10);}實(shí)時(shí)顯示畫(huà)面并捕抓人臉功能實(shí)現(xiàn)實(shí)現(xiàn)實(shí)時(shí)顯示畫(huà)面的原理是通過(guò)調(diào)用攝攝像頭不斷采集的圖像數(shù)據(jù)然后對(duì)采集到的圖片數(shù)據(jù)進(jìn)行相應(yīng)的轉(zhuǎn)換并進(jìn)行人面特征提取,轉(zhuǎn)換完成后顯示到QLabel上。首先,定義一個(gè)定時(shí)器,并聲明一個(gè)槽函數(shù),之后利用connect函數(shù)建立連接。設(shè)定定時(shí)器觸發(fā)的時(shí)間,每當(dāng)持續(xù)時(shí)間超過(guò)設(shè)定的時(shí)間后timeout超時(shí)信號(hào)就會(huì)被發(fā)射出去,槽函數(shù)每接收到一次超時(shí)信號(hào)就會(huì)執(zhí)行槽函數(shù)。在槽函數(shù)中調(diào)用攝像頭采集圖片的并進(jìn)行數(shù)據(jù)的轉(zhuǎn)換、人臉特征提取,并將轉(zhuǎn)換后的圖片顯示到QLabel上,這樣就可以實(shí)時(shí)顯示畫(huà)面并捕抓人臉功能。如果采集到的圖像中有人臉,便能人臉特征提取成功并會(huì)在圖像中繪制人臉框圖后顯示到QLabel標(biāo)簽上。在此提示,在此之前需要進(jìn)行圖像數(shù)據(jù)的轉(zhuǎn)換,將攝像頭采集到的MAT數(shù)據(jù)類型的圖像轉(zhuǎn)換為rockx_image_t類型的數(shù)據(jù)圖像才能進(jìn)行人臉特征提取并繪制人臉框圖。如果采集到的圖像中不存在人臉成分,檢測(cè)人臉并繪制人臉框圖不成功。那么圖像數(shù)據(jù)將進(jìn)行其他相應(yīng)的數(shù)據(jù)轉(zhuǎn)換后直接顯示到QT界面。首先,重置圖片的大小以適應(yīng)用于顯示的標(biāo)簽的大小,接著將圖片沿x軸翻轉(zhuǎn)到正常的視覺(jué)角度,然后將opencv的圖像數(shù)據(jù)轉(zhuǎn)換為QT的QImage數(shù)據(jù)再進(jìn)行RGB轉(zhuǎn)換為人的視覺(jué)所能看到的正常的顏色。程序?qū)崿F(xiàn)流程如REF_Ref97466678\h圖43下所示圖STYLEREF1\s4SEQ圖\*ARABIC\s13實(shí)時(shí)顯示畫(huà)面并捕抓人臉功能流程實(shí)時(shí)顯示攝像頭數(shù)據(jù)代碼:voidMainWindow::show_vedio(){rockx_image_tinput_image;//人面特征memset(&out_feature1,0,sizeof(rockx_face_feature_t));Matraw_frame,show_frame;//raw_frame原圖Matir_frame;//采集數(shù)據(jù)capture>>raw_frame;//把MAT轉(zhuǎn)換為rockx_image_tinput_image.pixel_format=ROCKX_PIXEL_FORMAT_BGR888;input_image.width=raw_frame.cols;input_image.height=raw_frame.rows;input_image.data=raw_frame.data;//提取人面特征并繪制框圖run_face_recognize(&input_image,&out_feature1);show_frame=raw_frame.clone(); cv::resize(show_frame,show_frame,Size(800,960),CV_INTER_CUBIC);cv::transpose(show_frame,show_frame);QImageimage(show_frame.data,show_frame.cols,show_frame.rows,show_frame.step1(),QImage::Format_RGB888);//交換RGB值image=image.rgbSwapped();QMatrixmatrix;matrix.rotate(90);ui->label->setPixmap(QPixmap::fromImage(image).transformed(matrix));}考勤打卡功能的實(shí)現(xiàn)考勤人員進(jìn)行考勤打卡時(shí)點(diǎn)擊LCD屏幕上的開(kāi)始考勤按鈕,成功會(huì)顯示考勤人員的姓名和時(shí)間,如下圖所示。實(shí)現(xiàn)該功能的過(guò)程設(shè)計(jì)到人臉識(shí)別的最后一步,即人臉特征對(duì)比。將從攝像頭獲取到的人臉圖像進(jìn)行人臉提取特征,同時(shí)對(duì)人臉?shù)浫霑r(shí)保存的人臉也進(jìn)行人臉特征提取,最后將兩者進(jìn)行對(duì)比。對(duì)比成功,則界面顯示考勤成功的提示,否則提示考勤失敗,沒(méi)有正在考勤的人員信息。實(shí)現(xiàn):正在的考勤的人員的人臉特征會(huì)在實(shí)時(shí)顯示攝像頭采集到的畫(huà)面的過(guò)程中提取過(guò)并保存到一個(gè)全局變量中。不同的人的臉特征或者同一個(gè)人不同時(shí)刻的人臉特征都會(huì)存放到同一個(gè)變量中但是會(huì)被最新提取到的人臉特征數(shù)據(jù)覆蓋掉。對(duì)已有的人臉圖像進(jìn)行特征提取時(shí)需要使用QDir目錄類打開(kāi)人臉?shù)浫霑r(shí)保存人臉的目錄,并設(shè)置過(guò)濾器獲取到JPG格式的人臉圖片路徑。使用for循環(huán)遍歷路徑列表的成員,將遍歷到的圖片數(shù)據(jù)利用toUtf8()函數(shù)轉(zhuǎn)換數(shù)據(jù)格式并存入rockx_image_t類型的變量中進(jìn)行特征提取,特征提取成功后的數(shù)據(jù)保存在rockx_face_feature_t變量中,最后,使用rockx_face_feature_similarity人臉特征對(duì)比函數(shù)接口將兩者對(duì)比。對(duì)比成功后將圖片路徑名存到QString類型的變量中,用QString類的成員函數(shù)remove函數(shù)截取考勤人員的姓名。考勤時(shí)間的獲?。豪肣DateTime類的靜態(tài)成員函數(shù)currentDateTime獲取當(dāng)前的系統(tǒng)時(shí)間并保存被到QString類的變量當(dāng)中。接著使用QString類中的成員函數(shù)toString()將其轉(zhuǎn)換為C語(yǔ)言標(biāo)準(zhǔn)的字符串并在toString()的括號(hào)中填入相應(yīng)得時(shí)間格式。比如填寫Qt::ISODate則轉(zhuǎn)換的時(shí)間格式為yyyy-MM-ddTHH:MM:ss的格式。再通過(guò)字符串處理函數(shù)時(shí)間格式處理成想要的格式。最后,通過(guò)QString類arg函數(shù)將姓名和獲取到的時(shí)間進(jìn)行拼接顯示到QLabel上實(shí)現(xiàn)打卡提示。通過(guò)字符串函數(shù)拼接出sql語(yǔ)句執(zhí)行命令將打卡信息插入到數(shù)據(jù)庫(kù)中。考勤打卡程序流程圖如REF_Ref96941672\h圖44所示圖STYLEREF1\s4SEQ圖\*ARABIC\s14考勤打卡程序流程圖考勤功能代碼如下:voidMainWindow::on_pushButton_2_clicked(){QStringtip1=QString("上班考勤成功");QStringtip2=QString("上班考勤失敗\n無(wú)此人員!");QStringtab_name=QString("on_duty");this->attendance(tip1,tip2,tab_name);}voidMainWindow::attendance(QStringtip1,QStringtip2,QStringtable_name){t->stop();QStringname;intret=this->AccessToFace(out_feature1,name);if(ret==0){name=name.remove(".jpg");QDateTimenow_time=QDateTime::currentDateTime();QStringAttendanceTime=QString("%1%2\n%3").arg(name).arg(tip1).arg(now_time.toString(Qt::ISODate).replace(10,1,'-').remove(15,3));QStringsql=QString("insertinto%1values('%2','%3');").arg(table_name).arg(name).arg(now_time.toString(Qt::ISODate).replace(10,1,'-').remove(15,3));intret=sqlite3_exec(ppd,sql.toUtf8().data(),NULL,NULL,NULL);if(ret!=SQLITE_OK){qDebug()<<"inserttablefail";}else{qDebug()<<"inserttableok";}ui->label_3->setText(AttendanceTime);}else{ui->label_3->setText(tip2);}t->start(10);}查看考勤的人員的信息功能實(shí)現(xiàn)原理:利用數(shù)據(jù)庫(kù)獲取表格數(shù)據(jù)記錄接口函數(shù),獲取表格中的所有記錄后顯示到qt中QtableWidget對(duì)象上,其中一條記錄包括考勤人員姓名和考勤時(shí)間。程序?qū)崿F(xiàn)過(guò)程涉及到兩個(gè)窗體間跳轉(zhuǎn)的問(wèn)題。查看界面如REF_Ref98285355\h圖46所示,界面包含查看上、下班考勤記錄按鈕和返回按鈕,主界面如REF_Ref98285287\h圖45所示。窗體跳轉(zhuǎn)實(shí)現(xiàn)過(guò)程:在主窗體中實(shí)例化一個(gè)即將跳轉(zhuǎn)到的窗體類的對(duì)象釘并建立父子窗體關(guān)系,跳轉(zhuǎn)時(shí)隱藏主窗體,顯示下一個(gè)窗體,通過(guò)按鈕控制跳轉(zhuǎn)。代碼如下所示:wWindow*w2;w2=newwWindow(this);//顯示查看窗體voidMainWindow::on_sigButton_clicked(){this->hide();w2->show();}返回功能實(shí)現(xiàn):顯示父窗體,隱藏當(dāng)前窗體,由按鍵控制,代碼如下:voidwWindow::on_retrunButton_clicked(){ui->tableWidget->clear();this->close();this->parentWidget()->show();}信息顯示過(guò)程實(shí)現(xiàn):第一步,打開(kāi)數(shù)據(jù)庫(kù);第二步,通過(guò)sqlite3_get_table()獲取表格數(shù)據(jù)記錄接口函數(shù)獲取表格數(shù)據(jù)信息,包括考勤信息、表格的行數(shù)、列數(shù);然后,通過(guò)獲取到的行列數(shù),在QtabeWidget類控件上生成對(duì)應(yīng)行數(shù)和列數(shù)的表格;最后,將信息設(shè)置到QtabeWidget類控件上的表格中,設(shè)置完成后關(guān)閉數(shù)據(jù)庫(kù),實(shí)現(xiàn)代碼如下所示。voidwWindow::on_sigButton_clicked(){intcol=0;introw=0;intret=sqlite3_open("face.db",&pd);if(ret!=SQLITE_OK){qDebug()<<"openface.dbfail";}if(ret!=SQLITE_OK){qDebug()<<"selecttablefail";}ret2=sqlite3_get_table(pd,"select*fromon_duty;",&result,&row,&col,&emsg);if(ret2!=SQLITE_OK){qDebug()<<"gettablemsgerror"return;}row=row+1;ui->tableWidget->clear();ui->tableWidget->setColumnCount(col);ui->tableWidget->setRowCount(row);ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);qDebug()<<"row="<<row<<"col="<<col;row=row-1;for(a=0;a<=row;a++){for(b=0;b<col;b++){ui->tableWidget->setItem(a,b,newQTableWidgetItem(result[a*col+b]));}}sqlite3_free_table(result);sqlite3_close(pd);}圖STYLEREF1\s4SEQ圖\*ARABIC\s15主界面圖圖STYLEREF1\s4SEQ圖\*ARABIC\s16查看功能界面圖系統(tǒng)調(diào)試調(diào)試步驟本次考勤系統(tǒng)設(shè)計(jì)主要分界面設(shè)計(jì)和硬件控制這兩部分。界面的設(shè)計(jì)利用Qt完成,硬件控制部分由gec6818開(kāi)發(fā)板完成。主要步驟如下:利用QtCreator并根據(jù)相應(yīng)的功能設(shè)計(jì)出考勤系統(tǒng)的ui界面;完成相應(yīng)的功能模塊的編程后在ubuntu系統(tǒng)進(jìn)行程序的交叉編譯.在烏班圖操作系統(tǒng)的命令終端執(zhí)行交叉編譯命令生成的makefile后執(zhí)行make命令生成可執(zhí)行文件。將電腦與開(kāi)發(fā)板利用USB線進(jìn)行連接,將攝像頭接入開(kāi)發(fā)板并在window系統(tǒng)上打開(kāi)SecureCRT串口調(diào)試軟件;通過(guò)SecureCRT串口調(diào)試軟件將可執(zhí)行程序文件下載到開(kāi)發(fā)板中;修改文件的執(zhí)行權(quán)限,即在SecureCRT中執(zhí)行chmod777+可執(zhí)行程序文件名;點(diǎn)擊相應(yīng)的功能按鈕,查看是否能實(shí)現(xiàn)代碼中設(shè)計(jì)的功能;如果某個(gè)功能無(wú)法實(shí)現(xiàn),那么可以修改代碼反復(fù)執(zhí)行除第四步以外的上述步驟進(jìn)行調(diào)試。直到全部的功能都是實(shí)現(xiàn)。開(kāi)發(fā)板測(cè)試.在進(jìn)行開(kāi)發(fā)板調(diào)試時(shí)主要測(cè)試開(kāi)發(fā)板的一些硬件功能是否完好。將攝像頭插入到開(kāi)發(fā)板上的相應(yīng)的USB接口,然后利用SecureCRT在電腦上查看攝像頭設(shè)備是否被開(kāi)發(fā)板檢測(cè)到。如果能夠查在dev目錄下可以查看攝像頭設(shè)備的設(shè)備號(hào),說(shuō)明開(kāi)發(fā)板可以檢測(cè)到攝像頭設(shè)備。確定攝像頭設(shè)備能夠被開(kāi)發(fā)板檢測(cè)到之后,使用攝像頭采集圖片的代碼測(cè)試是否能夠采集到圖像并實(shí)時(shí)顯示是畫(huà)面到開(kāi)發(fā)板上。測(cè)試開(kāi)發(fā)板的LCD屏幕是否能夠正常使用,可以編寫一個(gè)簡(jiǎn)單的qt程序進(jìn)行測(cè)試。比如,可以使用QPushbutton按鍵類
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 蜜蜂養(yǎng)殖場(chǎng)生產(chǎn)制度
- 消毒生產(chǎn)設(shè)備采購(gòu)制度
- 生產(chǎn)指揮車輛管理制度
- 車站安全生產(chǎn)告誡制度
- 農(nóng)業(yè)生產(chǎn)廢棄物制度
- 林業(yè)生產(chǎn)用工管理制度
- 2026浙江南方水泥有限公司校園招聘參考考試試題附答案解析
- 直接生產(chǎn)費(fèi)用報(bào)銷制度
- 廚房生產(chǎn)內(nèi)控制度
- 車間設(shè)備生產(chǎn)安全制度
- 2026年九江職業(yè)大學(xué)單招職業(yè)適應(yīng)性考試題庫(kù)帶答案解析
- 天車設(shè)備使用協(xié)議書(shū)
- 發(fā)泡混凝土地面防滑施工方案
- 產(chǎn)教融合項(xiàng)目匯報(bào)
- 2025-2026學(xué)年湖北省襄陽(yáng)市襄城區(qū)襄陽(yáng)市第四中學(xué)高一上學(xué)期9月月考英語(yǔ)試題
- 蘇少版(五線譜)(2024)八年級(jí)上冊(cè)音樂(lè)全冊(cè)教案
- 江蘇省城鎮(zhèn)供水管道清洗工程估價(jià)表及工程量計(jì)算標(biāo)準(zhǔn) 2025
- 2025年國(guó)家能源局公務(wù)員面試備考指南及模擬題集
- 醫(yī)院感控人員理論知識(shí)考核試題及答案
- 2025遼寧鐵道職業(yè)技術(shù)學(xué)院?jiǎn)握锌荚囄幕刭|(zhì)數(shù)學(xué)練習(xí)題及參考答案詳解(完整版)
- 珍愛(ài)健康-遠(yuǎn)離油脂課件
評(píng)論
0/150
提交評(píng)論