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