湯文俊 彭立 席博文
【摘 要】OpenCV是一個(gè)用C++語(yǔ)言編寫(xiě)的計(jì)算機(jī)視覺(jué)庫(kù),在Java程序中可以通過(guò)JavaCV來(lái)訪問(wèn)OpenCV。本文介紹了一個(gè)基于JavaCV的人臉識(shí)別程序,該程序事先要對(duì)人臉識(shí)別器進(jìn)行訓(xùn)練,之后就可以根據(jù)輸入的人臉照片識(shí)別出相應(yīng)的身份。
【關(guān)鍵詞】JavaCV;OpenCV;人臉識(shí)別
中圖分類號(hào): TP391.41 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 2095-2457(2019)01-0003-002
DOI:10.19694/j.cnki.issn2095-2457.2019.01.002
0 引言
人臉識(shí)別是基于人的臉部特征信息進(jìn)行身份識(shí)別的一種生物識(shí)別技術(shù),目前已被廣泛應(yīng)用于各類具有身份識(shí)別功能的系統(tǒng)中,如考勤系統(tǒng)[1]。OpenCV是一個(gè)用C++語(yǔ)言編寫(xiě)的跨平臺(tái)計(jì)算機(jī)視覺(jué)開(kāi)源庫(kù),它實(shí)現(xiàn)了計(jì)算機(jī)視覺(jué)和圖像處理方面很多較為完善的算法,并提供了幾百個(gè)函數(shù)供用戶使用,OpenCV已成為計(jì)算機(jī)視覺(jué)領(lǐng)域的首選開(kāi)發(fā)庫(kù)[2]。在Java程序中可以通過(guò)JavaCV來(lái)訪問(wèn)OpenCV。JavaCV是一組Jar包,它封裝了各種常用計(jì)算機(jī)視覺(jué)庫(kù)的接口,其中就有openCV[3]。本文介紹了一個(gè)基于JavaCV的人臉識(shí)別程序,該程序已被用于筆者開(kāi)發(fā)的課堂移動(dòng)考勤系統(tǒng)中。
1 程序介紹
該程序用Java語(yǔ)言編寫(xiě),它借助JavaCV實(shí)現(xiàn)了人臉識(shí)別功能。程序用到了三個(gè)JavaCV提供的Jar包,分別是:javacpp.jar、javacv-windows-x86.jar、javacv.jar。
為了確保人臉識(shí)別的準(zhǔn)確性,程序事先要用大量的人臉照片對(duì)人臉識(shí)別器進(jìn)行訓(xùn)練,該項(xiàng)工作分為兩步進(jìn)行。首先,程序?qū)rigin_photo目錄中存放的原始照片進(jìn)行人臉檢測(cè),并將檢測(cè)出的人臉以照片的形式存放于train_photo目錄;之后,程序用train_photo目錄中的照片對(duì)人臉識(shí)別器進(jìn)行訓(xùn)練。在這兩個(gè)目錄中,照片名的格式為:分類號(hào)_編號(hào)。其中,分類號(hào)用來(lái)代表一個(gè)人的身份,同一個(gè)人的分類號(hào)相同;編號(hào)用來(lái)區(qū)分同一個(gè)人的不同照片,同一個(gè)人的不同照片有不同的編號(hào)。訓(xùn)練完人臉識(shí)別器之后,程序就可以根據(jù)輸入的人臉照片識(shí)別出相應(yīng)的分類號(hào),即照片中人的身份。
2 方法說(shuō)明
該程序包含了一個(gè)類FaceRecognition,類中定義了四個(gè)靜態(tài)方法供外界調(diào)用,分別是:detectFace、detectFaceAndSave、trainFaceRecognizer、recognizeFace。要訓(xùn)練人臉識(shí)別器,只需要調(diào)用trainFaceRecognizer方法即可;訓(xùn)練好人臉識(shí)別器后,調(diào)用recognizeFace方法就可進(jìn)行人臉識(shí)別。
3 結(jié)語(yǔ)
OpenCV是一個(gè)用C++語(yǔ)言編寫(xiě)的計(jì)算機(jī)視覺(jué)庫(kù),在Java程序中可以通過(guò)JavaCV來(lái)訪問(wèn)OpenCV。本文介紹了一個(gè)基于JavaCV的人臉識(shí)別程序,該程序小巧、實(shí)用,對(duì)開(kāi)發(fā)與人臉識(shí)別相關(guān)的Java應(yīng)用具有一定的參考價(jià)值。
【參考文獻(xiàn)】
[1]360百科.人臉識(shí)別[EB/OL].https://baike.so.com/doc/5431092-5669384.html.
[2]毛星云,冷雪飛,王碧輝等.OpenCV3編程入門(mén)[M].電子工業(yè)出版社,2015.
[3]開(kāi)源中國(guó).Java視覺(jué)處理庫(kù)JavaCV[EB/OL].https://www.oschina.net/p/javacv.