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進階視訊。
同時我還會定期整理之前攢下的原始碼(很多我自己也沒看過),學習資料,分享給大家:
如果準備好了,來,掃碼吧!加入我們吧!