1. 程式人生 > >Face++人臉識別 android studio開發整合

Face++人臉識別 android studio開發整合

最近幾年人臉識別被炒到了風口上,相對應的第三方平臺也比較多,如face++,科大訊飛,閱面科技,包括騰訊等等都有自己的人臉資料庫,以及開放的api介面,因為專案需要,因此需要在android平臺整合人臉檢測以及人臉識別技術,在此過程中也是踩了不少坑,在此,把我整合的步驟以及遇到的坑分享一下.

先說需求:

1使用google的親兒子google pixel c平板作為平臺,當進入人臉識別的介面中,顯示以及檢測人臉資料

2.當點選人臉檢測按鈕時,會把當前的資料提交給第三方平臺進行線上檢測

3.如果檢測有人,則需要在人臉庫中搜索該人臉

4.如果沒有搜到則新增,如果收到了則提示.


先說說人臉檢測,其實android sdk 本身就自帶有人臉檢測的api,但並不是所有的裝置都支援,比如這個google pixel c雖說是google的親兒子,但是可識別的人臉數為0....可以通過以下程式碼來檢視裝置本身支援的人臉數,一般都是30+以上吧..

public int getMaxFace() {
		Camera camera = Camera.open(Camera.CameraInfo.CAMERA_FACING_FRONT);
		return camera.getParameters().getMaxNumDetectedFaces();
}
因此此路針對pixel c平板堵住了,只能採用一幀一幀的去檢測人臉了,但如果使用線上檢測實時性肯定大打折扣,所以只能通過第三方提供的離線SDK進行本地的人臉檢測了,抱著這個目的在眾多的人臉識別的平臺中篩選了許多,最後感覺face++是最適合本專案的.
face++點這兒

步驟:

1.需要在face++網站中註冊並且建立一個試用(試用免費)的api key 


2.建立bundle id


3.下載離線SDK


4.如果需要快速整合進去,face++有提供demo 戳這裡


但本專案中的平板即pixel c在跑face++提供的demo時,檢測效果很不理想,只能偶爾的檢測到,聯絡到face++的技術人員,說是因為demo是做給手機用的,因此需要自己修改一下demo中的引數,我遇到的問題是

1.demo中的activity都是固定的豎屏,但是專案中需要將平板處於橫屏狀態,當在配置檔案中改為橫屏時,人臉始終處於貌似旋轉了90度的樣子,網上查了很多,大多是在預覽前!預覽前!預覽前! 呼叫setDisplayOrientation()

來設定相機預覽旋轉的角度

2.demo中的activity中如果螢幕是橫屏,那麼在進行人臉繪製的時候需要將寬和高的值互換才可以準確的畫出來人臉

在onPreviewFrame中 



以上是對demo中做出一些修改好適配自己的平板用的,


當修改完這個之後,平板終於可以成功實時的檢測出人臉了,人臉識別可以按照face++提供的文件說明來整合.