一個簡單的人臉識別庫

mymdeep發表於2018-03-21

deepFace

前言

deepFace是直接封裝了Android原生的影象識別,簡化了使用介面,避免了一部分坑,可以獲取人臉的中心點,和兩眼之間的距離。

使用

gradle 依賴

compile 'com.deep:face_deep:1.1'
複製程式碼

介面說明

拍照識別

拍照識別,要求使用照相機拍照,然後對拍照的內容進行處理。而使用照相機必須要使用一個相機的preview surfaceview 介面,這個已經封裝好,可以用deepFace中的CameraSurfacePreview,也可以自己寫。

使用相機必須要要求有個介面展示相機的拍攝內容,否者報錯,如果想實現後臺偷拍,可以將這個展示的View寬高設定為1畫素

如果使用拍照檢測,需要初始化相機以及CameraSurfacePreview,當然這部分程式碼使用者可以根據需求自己寫。

mCamera = Camera.open(1);
mCamera.setDisplayOrientation(90);
AndroidDetectUtils.getInstance().setCameraParam(mCamera);
mCameraSurPreview = new CameraSurfacePreview(this,mCamera);
preview.addView(mCameraSurPreview);
複製程式碼

Camera 0對應的是後置攝像頭,1是前置攝像頭 setDisplayOrientation是設定相機角度。

識別

識別可以直接呼叫:

 AndroidDetectUtils.getInstance().check(bytes, new CheckCallback() {
                            @Override
                            public void onSuccess(int count, Face[] faces) {
                                Log.e("xxxxxx","success "+" count="+count);
                            }

                            @Override
                            public void onFail() {
                                Log.e("xxxxxx","fail ");

                            }
                        });
複製程式碼

其中bytes是相機拍攝的位元組流,也可以傳入bitmap或者本地file。

CheckCallback回撥,是對檢測結果的處理。onSuccess是檢測到了人臉,count是人臉個數,Face陣列為每個人臉的資料。

該介面建議在非同步執行緒中呼叫,如果圖片很大,耗時較長。

許可權問題

影象識別本身不需要任何許可權設定,但是如果使用相機需要新增

  <uses-permission android:name="android.permission.CAMERA" />
複製程式碼

如果使用本地圖片需要:

 <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
複製程式碼

特殊介面

設定人臉個數

可以設定最大檢測人臉的個數,建議不要超過10,否則影響準確性:

Constants.MAX_FACES = 5
複製程式碼

log開關

L.debug = true  //false為關閉
複製程式碼

總結

詳細使用情況可以參考demo。 之前總結下來的學習原始碼和視訊會逐漸分享給大家,對於剛剛入門的朋友建議關注我的公眾號,傳送android獲取android入門教學視訊,傳送java獲取java進階視訊。

一個簡單的人臉識別庫

同時我還會定期整理之前攢下的原始碼(很多我自己也沒看過),學習資料,分享給大家:

一個簡單的人臉識別庫
如果準備好了,來,掃碼吧!加入我們吧!
一個簡單的人臉識別庫

相關文章