版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
*******************實(shí)踐教學(xué)*******************蘭州理工大學(xué)計(jì)算機(jī)與通信學(xué)院2023年春季學(xué)期軟件工程開發(fā)綜合訓(xùn)練課程設(shè)計(jì)題目:基于人臉檢測(cè)技術(shù)的人數(shù)統(tǒng)計(jì)系統(tǒng)專業(yè)班級(jí):計(jì)算機(jī)科學(xué)與技術(shù)13級(jí)4班姓名:?jiǎn)嚏鲗W(xué)號(hào):13240408指導(dǎo)教師:曹來成成績(jī):目錄TOC\o"1-3"\h\z摘要11.問題描述21.1問題背景21.2設(shè)計(jì)要求21.3面部感知系統(tǒng)的重要內(nèi)容22.系統(tǒng)設(shè)計(jì)32.1各功能模塊說明32.2總體結(jié)構(gòu)設(shè)計(jì)42.3圖像預(yù)處理的層次圖53.系統(tǒng)測(cè)試53.1測(cè)試的目的53.2測(cè)試原那么63.3測(cè)試方案73.4測(cè)試結(jié)果73.5測(cè)試總結(jié)10參考文獻(xiàn)11總結(jié)12附錄〔程序源代碼〕13摘要圖像拼接(imagemosaic)技術(shù)是將一組相互間重疊局部的圖像序列進(jìn)行空間匹配對(duì)準(zhǔn),經(jīng)重采樣合成后形成一幅包含各圖像序列信息的寬視角場(chǎng)景的、完整的、高清晰的新圖像的技術(shù)。圖像拼接在攝影測(cè)量學(xué)、計(jì)算機(jī)視覺、遙感圖像處理、醫(yī)學(xué)圖像分析、計(jì)算機(jī)圖形學(xué)等領(lǐng)域有著廣泛的應(yīng)用價(jià)值。一般來說,圖像拼接的過程由圖像獲取,圖像配準(zhǔn),圖像合成三步驟組成,其中圖像配準(zhǔn)是整個(gè)圖像拼接的根底。本文研究了兩種圖像配準(zhǔn)算法:基于特征和基于變換域的圖像配準(zhǔn)算法。在基于特征的配準(zhǔn)算法的根底上,提出一種穩(wěn)健的基于特征點(diǎn)的配準(zhǔn)算法。首先改良Harris角點(diǎn)檢測(cè)算法,有效提高所提取特征點(diǎn)的速度和精度。然后利用相似測(cè)度NCC(normalizedcrosscorrelation——?dú)w一化互相關(guān)),通過用雙向最大相關(guān)系數(shù)匹配的方法提取出初始特征點(diǎn)對(duì),用隨機(jī)采樣法RANSAC(RandomSampleConsensus)剔除偽特征點(diǎn)對(duì),實(shí)現(xiàn)特征點(diǎn)對(duì)的精確匹配。最后用正確的特征點(diǎn)匹配對(duì)實(shí)現(xiàn)圖像的配準(zhǔn)。本文提出的算法適應(yīng)性較強(qiáng),在重復(fù)性紋理、旋轉(zhuǎn)角度比擬大等較難自動(dòng)匹配場(chǎng)合下仍可以準(zhǔn)確實(shí)現(xiàn)圖像配準(zhǔn)。關(guān)鍵詞:圖像拼接圖像配準(zhǔn)圖像融合全景圖問題描述1.1問題背景:隨著平安入口控制和金融貿(mào)易方面應(yīng)用需要的快速增長(zhǎng),生物統(tǒng)計(jì)識(shí)別技術(shù)得到了新的重視。目前,微電子和視覺系統(tǒng)方面取得的新進(jìn)展,使該領(lǐng)域中高性能自動(dòng)識(shí)別技術(shù)的實(shí)現(xiàn)代價(jià)降低到了可以接受的程度。而人臉識(shí)別是所有的生物識(shí)別方法中應(yīng)用最廣泛的技術(shù)之一,人臉識(shí)別技術(shù)是一項(xiàng)近年來興起的,但不大為人所知的新技術(shù)。人們更多的是在電影中看到這種技術(shù)的神奇應(yīng)用:警察將偷拍到的嫌疑犯的臉部照片,輸入到電腦中,與警方數(shù)據(jù)庫中的資料進(jìn)行比對(duì),并找出該嫌犯的詳細(xì)資料和犯罪記錄。這并非虛構(gòu)的情節(jié)。在國外,人臉識(shí)別技術(shù)早已被大量使用在國家重要部門以及軍警等安防部門。在國內(nèi),對(duì)于人臉識(shí)別技術(shù)的研究始于上世紀(jì)90年代,目前主要應(yīng)用在公安、金融、網(wǎng)絡(luò)平安、物業(yè)管理以及考勤等領(lǐng)域。1.2設(shè)計(jì)要求:本設(shè)計(jì)要求學(xué)生開發(fā)一個(gè)基于人臉檢測(cè)技術(shù)的人數(shù)統(tǒng)計(jì)系統(tǒng),可以實(shí)現(xiàn)在一張有多張人臉的圖像中檢測(cè)出人臉,并統(tǒng)計(jì)出圖像中的人數(shù)〔允許有誤差〕。該系統(tǒng)的主要關(guān)鍵技術(shù)問題是人臉檢測(cè)算法。=1\*romani、要求開發(fā)出一個(gè)可獨(dú)立運(yùn)行的基于人臉檢測(cè)技術(shù)的人數(shù)統(tǒng)計(jì)系統(tǒng)。整個(gè)系統(tǒng)由圖像預(yù)處理、人臉檢測(cè)、人數(shù)統(tǒng)計(jì)及結(jié)果輸出等模塊組成;=2\*romanii、首先要對(duì)人臉/非人臉圖像進(jìn)行預(yù)處理,預(yù)處理的步驟包括:對(duì)圖像進(jìn)行灰度化、直方圖均衡化、中值濾波等操作;=3\*romaniii、其次要選擇、實(shí)現(xiàn)一種人臉檢測(cè)算法〔例如:基于AdaBoost的人臉檢測(cè)算法〕,人臉檢測(cè)準(zhǔn)確率應(yīng)超過80%。=4\*romaniv、系統(tǒng)的開發(fā)可以采用C++或Matlab編程語言來實(shí)現(xiàn);=5\*romanv、要求設(shè)計(jì)的基于人臉檢測(cè)技術(shù)的人數(shù)統(tǒng)計(jì)系統(tǒng)可獨(dú)立運(yùn)行,具有良好的用戶交互界面、易操作性和可靠性等。1.3面部感知系統(tǒng)的重要內(nèi)容基于視覺通道信息的面部感知系統(tǒng),包括人臉檢測(cè)和跟蹤、面部特征定位、面部識(shí)別、人臉歸類〔年齡、種族、性別等的判別〕、表情識(shí)別、唇讀等分系統(tǒng),如圖1-1所式,可以看出,繼人臉檢測(cè)和跟追之后,面部特征定位通常是面部感知的一個(gè)必備環(huán)節(jié),是后續(xù)工作的根底,具有重要的意義。盡管人臉識(shí)別不能說是其他面部感知模塊的必備功能,但是,可以肯定的是,利用的身份信息,結(jié)合特定人的先驗(yàn)知識(shí),可以提高表情分析、唇讀和語音識(shí)別、手勢(shì)識(shí)別乃至手寫體識(shí)別的可靠性。而計(jì)算機(jī)對(duì)使用者身份確認(rèn)的最直接的應(yīng)用就是基于特定使用者的環(huán)境設(shè)置:如使用者的個(gè)性化工作環(huán)境,信息的共享和隱私保護(hù)等等。系統(tǒng)設(shè)計(jì)該人臉檢測(cè)系統(tǒng)主要有五個(gè)局部構(gòu)成:圖像獲取功能、圖像預(yù)處理功能、人臉定位功能、特征提取功能、識(shí)別功能。2.1各功能模塊說明=1\*romani、圖像獲取功能:該模塊主要是從攝像頭拍照后進(jìn)行獲取圖片,也可以從圖片庫中獲取,獲取后的圖片可以在軟件的界面中顯示出來以便進(jìn)行識(shí)別。=2\*romanii、圖像預(yù)處理功能:該模塊主要包括圖像光線補(bǔ)償、圖像變成灰色、高斯平滑、均衡直方圖、實(shí)現(xiàn)圖像比照度增強(qiáng)、二值化變換等。=3\*romaniii、人臉定位功能:人臉定位是將典型的臉部特征〔如眼睛,鼻尖,嘴唇等等〕標(biāo)記出來,在本系統(tǒng)中,定位的特征是眼睛,鼻尖和嘴巴三個(gè)。由于眼睛具有對(duì)稱性,因此可以很快就能標(biāo)記出來,而鼻子是在眼睛下面,且嘴巴在鼻子下面,所以只要眼睛標(biāo)記好,鼻子和嘴巴也能相應(yīng)的標(biāo)記出來。=4\*romaniv、特征提取功能:特征提取按以下4個(gè)步驟進(jìn)行:〔1〕、提取兩只眼睛的距離〔2〕、眼睛的傾角度〔3〕、眼睛、嘴巴的重心〔4〕、用一個(gè)矩形標(biāo)出每一個(gè)特征=5\*romanv、識(shí)別功能:該模塊通過與庫存中的特征向量進(jìn)行比擬,找出與特征最相近的參數(shù),再對(duì)該參數(shù)進(jìn)一步分析。如果分析在我們所確認(rèn)的范圍內(nèi),我們就認(rèn)為該人就是我們所要找的。然后從庫存中提取出該人相關(guān)的信息,并顯示出來。如果庫存中沒有,那么給出提示是否對(duì)存庫作為樣本。2.2總體結(jié)構(gòu)設(shè)計(jì)該應(yīng)用程序的總體結(jié)構(gòu)設(shè)計(jì)流程圖如圖2-1所示:用用戶從“文件從“文件〞菜單中選擇“翻開〞選項(xiàng)在彈出的“在彈出的“翻開〞對(duì)話框中選擇要翻開的位圖,點(diǎn)擊“確定〞,應(yīng)用程序顯示所要翻開的位圖獲取臉部區(qū)域獲取特征參數(shù)人臉定位識(shí)別圖像預(yù)處理獲取臉部區(qū)域獲取特征參數(shù)人臉定位識(shí)別圖像預(yù)處理顯示識(shí)別結(jié)果顯示識(shí)別結(jié)果圖2—1總體結(jié)構(gòu)設(shè)計(jì)流程圖2.3圖像預(yù)處理的層次圖如圖2-2所示:預(yù)處理預(yù)處理光線補(bǔ)償圖像灰度化高斯平滑均衡直方圖圖像比照度增強(qiáng)二值化圖2-2預(yù)處理的層次圖系統(tǒng)測(cè)試3.1測(cè)試的目的:簡(jiǎn)單地說,就是替用戶受過,測(cè)試的最終目的是確保最終交給用戶的產(chǎn)品的功能符合用戶的需求,把盡可能多的問題在產(chǎn)品交給用戶之前發(fā)現(xiàn)并改正。具體地講,測(cè)試一般要到達(dá)以下目標(biāo):=1\*romani、確保產(chǎn)品完成了它所承諾或公布的功能,并且所有用戶可以訪問到的功能都有明確的書面說明在某種意義上與ISO9001是同一種思想。產(chǎn)品缺少明確的書面文檔,是廠商一種短期行為的表現(xiàn),也是一種不負(fù)責(zé)任的表現(xiàn)。所謂短期行為,是指缺少明確的書面文檔既不利于產(chǎn)品最后的順利交付,容易與用戶發(fā)生矛盾,影響廠商的聲譽(yù)和將來與用戶的合作關(guān)系;同時(shí)也不利于產(chǎn)品的后期維護(hù),也使廠商支出超額的用戶培訓(xùn)和技術(shù)支持費(fèi)用。從長(zhǎng)期利益看,這是很不劃算的。領(lǐng)測(cè)認(rèn)為接觸過的軟件產(chǎn)品,很少有向方正這樣大大的產(chǎn)品、薄薄的文檔。當(dāng)然,書面文檔的編寫和維護(hù)工作對(duì)于使用快速原型法(RAD)開發(fā)的工程是最為重要的、最為困難,也是最容易被忽略的。最后,書面文檔的不健全甚至不正確,也是測(cè)試工作中遇到的最大和最頭痛的問題,它的直接后果是測(cè)試效率低下、測(cè)試目標(biāo)不明確、測(cè)試范圍不充分,從而導(dǎo)致最終測(cè)試的作用不能充分發(fā)揮、測(cè)試效果不理想。=2\*romanii、確保產(chǎn)品滿足性能和效率的要求使用起來系統(tǒng)運(yùn)行效率低(性能低)、或用戶界面不友好、用戶操作不方便(效率低)的產(chǎn)品不能說是一個(gè)有競(jìng)爭(zhēng)力的產(chǎn)品。用戶最關(guān)心的不是你的技術(shù)有多先進(jìn)、功能有多強(qiáng)大,而是他能從這些技術(shù)、這些功能中得到多少好處。也就是說,用戶關(guān)心的是他能從中取出多少,而不是你已經(jīng)放進(jìn)去多少。=3\*romaniii、確保產(chǎn)品是健壯的和適應(yīng)用戶環(huán)境的健壯性即穩(wěn)定性,是產(chǎn)品質(zhì)量的根本要求,尤其對(duì)于一個(gè)用于事務(wù)關(guān)鍵或時(shí)間關(guān)鍵的工作環(huán)境中。另外就是不能假設(shè)用戶的環(huán)境(某些工程可能除外),如:報(bào)業(yè)用戶許多配置是比擬低的,而且是和某些第三方產(chǎn)品同時(shí)使用的。通過導(dǎo)入圖片,檢測(cè)人數(shù)統(tǒng)計(jì)的速度以及準(zhǔn)確程度,分別導(dǎo)入一張、兩張、三張、四張、五張以及14張人臉的圖片,檢測(cè)程序的正確率。3.2測(cè)試原那么:=1\*romani、應(yīng)當(dāng)把“盡早地和不斷地進(jìn)行軟件測(cè)試〞作為軟件開發(fā)者的座右銘。=2\*romanii、測(cè)試用例應(yīng)由測(cè)試輸入數(shù)據(jù)和與之對(duì)應(yīng)的預(yù)期輸出結(jié)果兩局部組成。=3\*romaniii、在設(shè)計(jì)測(cè)試用例時(shí),應(yīng)當(dāng)包括合理的輸入條件和不合理的輸入條件。不合理的輸入條件是指異常的,臨界的,可能引起問題異變的輸入條件。=4\*romaniv、充分注意測(cè)試中的群集現(xiàn)象。經(jīng)驗(yàn)說明,測(cè)試后程序殘存的錯(cuò)誤數(shù)目與該程序中以發(fā)現(xiàn)的錯(cuò)誤數(shù)目或檢錯(cuò)率成正比。應(yīng)該對(duì)錯(cuò)誤群集的程序段進(jìn)行重點(diǎn)測(cè)試。=5\*romanv、嚴(yán)格執(zhí)行測(cè)試方案,排除測(cè)試的隨意性。測(cè)試方案應(yīng)包括:所測(cè)軟件的功能輸入和輸出,測(cè)試內(nèi)容,各項(xiàng)測(cè)試的進(jìn)度安排,資源要求,測(cè)試資料,測(cè)試工具,測(cè)試用例的選擇,測(cè)試的控制方法和過程,系統(tǒng)的組裝方式,跟蹤規(guī)那么,調(diào)試規(guī)那么,以及回歸測(cè)試的規(guī)定等等以及評(píng)價(jià)標(biāo)準(zhǔn)。=6\*romanvi、應(yīng)當(dāng)對(duì)每一個(gè)測(cè)試結(jié)果做全面的檢查。=7\*romanvii、妥善保存測(cè)試方案,測(cè)試用例,出錯(cuò)統(tǒng)計(jì)和最終分析報(bào)告,為維護(hù)提供方便。3.3測(cè)試方案:本系統(tǒng)主要由圖像處理、人臉定位、特征提取、識(shí)別四個(gè)局部組成,而圖像處理對(duì)于后面的工作結(jié)果好壞起著至關(guān)重要的作用,因此從軟件開發(fā)的最初階段我們就要對(duì)軟件進(jìn)行不斷的測(cè)試,對(duì)圖像處理模塊中的各個(gè)子模塊進(jìn)行測(cè)試以便檢測(cè)經(jīng)過處理后的圖像效果是否到達(dá)預(yù)期的效果。3.4測(cè)試結(jié)果:=1\*romani、主界面:圖4—1在運(yùn)行程序的主界面有兩個(gè)菜單項(xiàng)選擇項(xiàng),分別是菜單和操作。菜單下包含從圖片統(tǒng)計(jì)和退出功能,從圖片統(tǒng)計(jì)即導(dǎo)入圖片,還有操作選項(xiàng)里面包含識(shí)別,點(diǎn)擊“識(shí)別〞一次即加載圖片,點(diǎn)擊第二次即識(shí)別圖片。=2\*romanii、導(dǎo)入圖片界面:圖4—2圖4—3上面兩張圖分別是導(dǎo)入圖片過程中要求選擇圖片的路徑,下面從文件夾導(dǎo)入一張圖片。圖4—4點(diǎn)擊“識(shí)別〞,將會(huì)進(jìn)行加載圖片,加載完成之后會(huì)有提示,再次點(diǎn)擊“識(shí)別〞,將會(huì)識(shí)別出如下的結(jié)果。圖4—5正確的識(shí)別出圖片中總共有14個(gè)人,但是在有些情況下也會(huì)出現(xiàn)錯(cuò)誤,你如下面的情況:圖4—6明明是兩個(gè)人,但是識(shí)別出來的卻是三個(gè)人。但是在整個(gè)測(cè)試過程中能滿足80%的情況下是正確的。3.5測(cè)試總結(jié):在人臉檢測(cè)測(cè)試的整個(gè)人過程中,隨機(jī)導(dǎo)入圖片,測(cè)試結(jié)果顯示,當(dāng)導(dǎo)入的圖圖尺寸過大或者人臉亮度較暗時(shí),識(shí)別圖片時(shí)可能會(huì)出錯(cuò),究其原因,可能是在設(shè)計(jì)的過程中沒有添加曝光增亮環(huán)節(jié),還有本設(shè)計(jì)支持的圖片格式為jpg。總體來說,實(shí)現(xiàn)了一個(gè)基于人臉檢測(cè)技術(shù)的人數(shù)統(tǒng)計(jì)系統(tǒng),可以實(shí)現(xiàn)在一張有多張人臉的圖像中檢測(cè)出人臉,并統(tǒng)計(jì)出圖像中的人數(shù)〔允許有誤差〕。該系統(tǒng)的主要關(guān)鍵技術(shù)問題是人臉檢測(cè)算法。=1\*romani、整個(gè)系統(tǒng)由圖像預(yù)處理、人臉檢測(cè)、人數(shù)統(tǒng)計(jì)及結(jié)果輸出等模塊組成;=2\*romanii、預(yù)處理的步驟包括:對(duì)圖像進(jìn)行灰度化、直方圖均衡化、中值濾波等操作;=3\*romaniii、實(shí)現(xiàn)了基于AdaBoost的人臉檢測(cè)算法,人臉檢測(cè)準(zhǔn)確率應(yīng)超過80%。=4\*romaniv、系統(tǒng)的開發(fā)采用JAVA編程語言來實(shí)現(xiàn);在eclipse中集成了WindowBuilder,以及使用了opencv2.4.9。=5\*romanv、具有良好的用戶交互界面、易操作性和可靠性等。參考文獻(xiàn)1.侯戩,通用車牌定位系統(tǒng)的研究與實(shí)現(xiàn)[D].華南理工大學(xué),2023.2.王永杰,
裴明濤,
賈云得.多信息融合的快速車牌定位[J].中國圖像圖形學(xué)報(bào),2023,33.山世光.面部特征檢測(cè)與識(shí)別的研究與實(shí)現(xiàn).哈爾濱工業(yè)大學(xué),1999,74.蔣遂平.人臉識(shí)別技術(shù)及應(yīng)用簡(jiǎn)介.中國計(jì)算機(jī)世界出版社,2003,125.徐慧.java數(shù)字圖像實(shí)用工程案例精選.人民郵電出版社,2004,36.徐慧.java數(shù)字圖像模式識(shí)別技術(shù)及工程實(shí)踐.北京:人民郵電出版社,2004,37.胡迎春等.人臉圖像特征點(diǎn)眼睛的定位與提取.柳州:廣西工學(xué)院學(xué)報(bào),2003,38.周長(zhǎng)發(fā).精通java圖像處理編程.北京:電子工業(yè)出版社,2004,109.張宏林.java數(shù)字圖像模式識(shí)別技術(shù)及工程實(shí)踐.北京:人民郵電出版社,2003,410.何斌等.java數(shù)字圖像處理.北京:人民郵電出版社,2001,411.黃維通,姚瑞霞.Vc++6.0程序設(shè)計(jì)教程.北京:機(jī)械工業(yè)出版社,2003,4安鵬.Vc++6.0程序設(shè)計(jì)導(dǎo)學(xué).北京:清華大學(xué)出版社,2003,613.張威等.java程序設(shè)計(jì)技巧與實(shí)例.北京:中國鐵道出版社,2003,314.黃維通姚瑞霞著.visualC++程序設(shè)計(jì)教程.北京:機(jī)械工業(yè)出版社,2004,1總結(jié)在這幾周的課設(shè)里,面對(duì)著諸多的問題和考驗(yàn),我一次又一次享受了難題解決前的困惑和難題解決后的興奮。雖然本次設(shè)計(jì)的成品還存在著一些問題,但是,對(duì)于作者來說,卻是不小的收獲。經(jīng)過幾周的課程設(shè)計(jì),對(duì)我各方面的影響都很大,對(duì)此我體會(huì)頗多:1、在設(shè)計(jì)的過程中,每一個(gè)步驟都十分的重要。設(shè)計(jì)前,一定要將需求分析工作做透徹,這直接關(guān)系到系統(tǒng)開發(fā)實(shí)現(xiàn)的難易程度和設(shè)計(jì)的進(jìn)度。這就要求我們經(jīng)常與指導(dǎo)老師和用戶交流信息,即使發(fā)現(xiàn)設(shè)計(jì)方向上的錯(cuò)誤。千萬不要認(rèn)為分析工作可有可無,分析做得好,實(shí)現(xiàn)起來時(shí)就相當(dāng)輕松。就像設(shè)計(jì)數(shù)據(jù)庫系統(tǒng),建表工作是最重要的一樣。一旦我們將內(nèi)容和設(shè)計(jì)思想確定下來以后,不要輕易改動(dòng)。確實(shí)要改,必須征求指導(dǎo)老師的意見。一般,指導(dǎo)老師豐富的經(jīng)驗(yàn)將給我們極大的幫助。2、熟悉軟件開發(fā)工具,如eclipse、opencv、WindowBuilder插件等。這個(gè)只要通過動(dòng)手熟悉就可以了,以前的學(xué)習(xí)方法是看書看書再看書,上機(jī)操作的時(shí)間很少,過后就忘了。經(jīng)過這次設(shè)計(jì),讓我清楚的感覺到開發(fā)工具的學(xué)習(xí)是要邊看書邊動(dòng)手才學(xué)得快、學(xué)得牢。3、要經(jīng)常與其他人交流,能獲得許多有用的信息。不要怕將自己的作品演示給別人看,別人會(huì)幫助你檢查出許多你意想不到的錯(cuò)誤,開闊你的思路,檢驗(yàn)?zāi)愕脑O(shè)計(jì)思想,提出很多有用的建議。這些建議往往是非常及時(shí)的,是你少走彎路,提高開發(fā)效率。只有集思廣益,善于借鑒,才能在最短的時(shí)間內(nèi)完成最多的工作。本次課程設(shè)計(jì)是針對(duì)我們本學(xué)期來所學(xué)知識(shí)而進(jìn)行的一次全面性的檢驗(yàn),它涵蓋的知識(shí)面廣,涉及到多個(gè)領(lǐng)域,需要我們具有較高的綜合知識(shí)水平及較強(qiáng)的解決問題的能力。通過這次設(shè)計(jì),一方面讓我更進(jìn)一步的熟悉和掌握了Java語言的根本語法以及更深入的了解了算法和eclipse開發(fā)工具的使用。另一方面在動(dòng)手能力上有了很大的提高,以前學(xué)的知識(shí)只是“知識(shí)〞,而現(xiàn)在是將“知識(shí)〞轉(zhuǎn)化成自身的本領(lǐng),全面提高了自身解決具體問題的能力。附錄〔程序源代碼〕主界面程序:packageyl.facerec;importorg.opencv.core.Core;importorg.opencv.core.Mat;importorg.opencv.core.MatOfRect;importorg.opencv.core.Point;importorg.opencv.core.Rect;importorg.opencv.core.Scalar;importorg.opencv.highgui.Highgui;importorg.opencv.objdetect.CascadeClassifier;publicclassDetectFace{ privateMatimage; publicintrunDetectFace(){ CascadeClassifierfaceDetector=newCascadeClassifier("./xml/lbpcascade_frontalface.xml"); image=Highgui.imread(MainWindow.getPhotoPath()); System.out.println(MainWindow.getPhotoPath()); MatOfRectfaceDetections=newMatOfRect(); faceDetector.detectMultiScale(image,faceDetections); for(Rectrect:faceDetections.toArray()){ Core.rectangle(image,newPoint(rect.x,rect.y),newPoint(rect.x+rect.width,rect.y +rect.height),newScalar(0,255,0)); } Highgui.imwrite("tmp/tmp.jpg",image); returnfaceDetections.toArray().length; }}基于人臉檢測(cè)的程序:packageyl.facerec;importjava.awt.BorderLayout;importjava.awt.EventQueue;importjava.awt.Font;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.io.File;importjavax.swing.ImageIcon;importjavax.swing.JFileChooser;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JMenu;importjavax.swing.JMenuBar;importjavax.swing.JMenuItem;importjavax.swing.JOptionPane;importjavax.swing.JPanel;importjavax.swing.JScrollPane;importjavax.swing.JSplitPane;importjavax.swing.SwingConstants;publicclassMainWindow{privateJFrameframe;privateJMenuItemmenuItem_Recognize;privateJMenumenuEdit;privateJMenumenu_File;privateJMenuItemmenuItem_FromPicture;privateJMenuItemmenuItem_Exit;privateintcountOfPeople,detectCount=0;privateDetectFacedetectFace;privatestaticStringphotoPath;privateJSplitPanesplitPane_FaceRecognition;privateJScrollPanescrollPane_DisplayPicture_Left;privateJScrollPanescrollPane_DisplayPicture_Right;privatestaticJLabellabel_DisplayPicture_Left;privatestaticJLabellabel_DisplayPicture_Right;privateJPanelpanelSoounth;publicstaticvoidmain(String[]args){ EventQueue.invokeLater(newRunnable(){publicvoidrun(){try{MainWindowwindow=newMainWindow(); window.frame.setVisible(true); }catch(Exceptione){ e.printStackTrace(); } } }); }publicMainWindow(){ detectFace=newDetectFace(); initialize(); }privatevoidinitialize(){ frame=newJFrame(); frame.setTitle("基于人臉檢測(cè)的人數(shù)統(tǒng)計(jì)系統(tǒng)"); frame.setBounds(200,100,800,600); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // JMenuBarmenuBar_MainWindow=newJMenuBar(); frame.setJMenuBar(menuBar_MainWindow); // menu_File=newJMenu("菜單"); menu_File.setFont(newFont("微軟雅黑",Font.PLAIN,14)); menuBar_MainWindow.add(menu_File); // menuItem_FromPicture=newJMenuItem("從圖片統(tǒng)計(jì)"); menuItem_FromPicture.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){ System.loadLibrary("opencv_java249"); JOptionPane.showMessageDialog(frame,"請(qǐng)翻開一張圖片!"); JFileChooserchooser=newJFileChooser("./test/");intresult=chooser.showOpenDialog(frame);if(result==JFileChooser.APPROVE_OPTION){label_DisplayPicture_Right.setIcon(null);photoPath=chooser.getSelectedFile().getAbsolutePath(); System.out.println(photoPath);label_DisplayPicture_Left.setIcon(newImageIcon(photoPath)); } } }); menuItem_FromPicture.setFont(newFont("微軟雅黑",Font.PLAIN,14)); menu_File.add(menuItem_FromPicture); // menuItem_Exit=newJMenuItem("退出"); menuItem_Exit.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){ System.exit(0); } }); menuItem_Exit.setFont(newFont("微軟雅黑",Font.PLAIN,14)); menu_File.add(menuItem_Exit); // menuEdit=newJMenu("操作"); menuEdit.setFont(newFont("微軟雅黑",Font.PLAIN,14)); menuBar_MainWindow.add(menuEdit); // menuItem_Recognize=newJMenuItem("識(shí)別"); menuItem_Recognize.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){if(isNull()){if(detectCount==0){ JOptionPane.showMessageDialog(frame,"正在加載圖片,請(qǐng)稍后。。。"); detectFace.runDetectFace(); detectCount++;try{ Thread.sleep(500); }catch(InterruptedExceptione1){ e1.printStackTrace(); } JOptionPane.showMessageDialog(frame,"加載圖片完畢,請(qǐng)點(diǎn)擊“識(shí)別〞按鈕進(jìn)行識(shí)別!"); }else{newFile("tmp/tmp.jpg").delete(); countOfPeople=detectFace.runDetectFace();label_DisplayPicture_Right.setIcon(newImageIcon("tmp/tmp.jpg")); JOptionPane.showMessageDialog(frame,"該圖片中共有"+countOfPeople+"個(gè)人!"); detectCount=0; } }else{ JOptionPane.showMessageDialog(frame,"請(qǐng)加載圖片后再操作!"); } } }); menuItem_Recognize.setFont(newFont("微軟雅黑",Font.PLAIN,14)); menuEdit.add(menuItem_Recognize); // splitPane_FaceRecognition=newJSplitPane(); frame.getContentPane().add(splitPane_FaceRecognition,BorderLayout.CENTER); // scrollPane_DisplayPicture_Left=newJScrollPane(); splitPane_FaceRecognition.setLeftComponent(scrollPane_DisplayPicture_Left); //label_DisplayPicture_Left=newJLabel("");label_DisplayPicture_Left.setHorizontalTextPosition(SwingConstants.CENTER);label_DisplayPicture_Left.setHorizontalAlignment(SwingConstants.CENTER); scrollPane_DisplayPicture_Left.setViewportView(label_DisplayPicture_Left); // scrollPane_DisplayPicture_Right=newJScrollPane(); splitPane_FaceRecognition.setRightComponent(scrollPane_DisplayPicture_Right); //label_DisplayPicture_Right=newJLabel("");label_DisplayPicture_Right.setHorizontalTextPosition(SwingConstants.CENTER);label_DisplayPicture_Right.setHorizontalAlignment(SwingConstants.CENTER); scrollPane_DisplayPicture_Right.setViewportView(label_DisplayPicture_Right); splitPane_FaceRecognition.setDividerLocation(300); }publicbooleanisNull(){if(photoPath!=null){returntrue; }else{returnfalse; } }publicJFramegetFrame(){returnframe; }publicvoidsetFrame(JFrameframe){this.frame=frame; }publicJMenuItemgetMenuItem_Recognize(){returnmenuItem_Recognize; }publicvoidsetMenuItem_Recognize(JMenuItemmenuItem_Recognize){this.menuItem_Recognize=menuItem_Recognize; }publicJMenugetMenuEdit(){returnmenuEdit; }publicvoidsetMenuEdit(JMenumenuEdit){this.menuEdit=menuEdit; }publicJMenugetMenu_File(){returnmenu_File; }publicvoidsetMenu_File(JMenumenu_File){this.menu_File=menu_File; }publicJMenuItemgetMenuItem_FromPicture(){returnmenuItem_FromPicture; }publicvoidsetMenuItem_FromPicture(JMenuItemmenuItem_FromPicture){this.menuItem_FromPicture=menuItem_FromPicture; }publicJMenuItemgetMenuItem_Exit(){returnmenuItem_Exit; }publicvoidsetMenuItem_Exit(JMenuItemmenuItem_Exit){this.menuItem_Exit=menuItem_Exit; }publicintgetCountOfPeople(){returncountOfPeople; }publicvoidsetCountOfPeople(intcountOfPeople){this.countOfPeople=countOfPeople; }publicintgetDetectCount(){returndetectCount; }publicvoidsetDetectCount(intdetectCount){this.detectCount=detectCount; }publicDetectF
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 安全教育防微杜漸
- 腦出血急救培訓(xùn)護(hù)理
- 創(chuàng)業(yè)夢(mèng)創(chuàng)新夢(mèng)主題活動(dòng)
- 黑龍江省 哈爾濱市第四十七中學(xué)校2024-2025學(xué)年七年級(jí)上學(xué)期期中考試語文試題
- 甘肅省蘭州市蘭州樹人中學(xué)2023-2024學(xué)年九年級(jí)上學(xué)期期中歷史試卷 - 副本
- 全球與中國CBRN防護(hù)服市場(chǎng)發(fā)展需求及投資機(jī)遇研究報(bào)告2024-2030年
- 廣東省廣州市白云區(qū)華賦學(xué)校2024-2025學(xué)年上學(xué)期七年級(jí)英語期中考試卷
- 內(nèi)蒙古自治區(qū)通遼市科爾沁左翼中旗聯(lián)盟校2024-2025學(xué)年九年級(jí)上學(xué)期期中考試歷史試題
- 天津市西青區(qū)富力中學(xué)2024-2025學(xué)年九年級(jí)上學(xué)期期中檢測(cè)物理試題
- 【課件】Unit4SectionA1a-1d課件人教版英語七年級(jí)上冊(cè)
- 煤礦開采學(xué)課程設(shè)計(jì)
- 亞馬遜品牌采購合同范本
- 二年級(jí)數(shù)學(xué)上冊(cè)第六單元7的乘法口訣課件蘇教版
- 經(jīng)濟(jì)學(xué)基礎(chǔ)高職PPT完整全套教學(xué)課件
- 過程裝備控制技術(shù)及應(yīng)用基礎(chǔ)
- 關(guān)于學(xué)生會(huì)主席的就職演講稿
- 《體前變向換手運(yùn)球》教學(xué)課件
- 青島市新能源汽車產(chǎn)業(yè)發(fā)展的調(diào)研報(bào)告
- 職業(yè)暴露針刺傷應(yīng)急預(yù)案演練腳本-
- 大學(xué)物理-麥克斯韋速率分布定律
- 優(yōu)先合理使用基本藥物督查分析反饋表
評(píng)論
0/150
提交評(píng)論