Accura Face Match
Face Biometrics is used for Matching Both the Source and the Target Image. It Matches the User's Selfie Image with the Image on the Document.
Step 1: Before you begin
If you haven't done already then follow Project Setup steps.
Please download the Accura Scan license and then add it to your app.
To generate your Accura Scan license contact [email protected]
Move your accuraface.license file into the module (app-level) assets folder (usually
<project>/<app-module>/src/main/assets
)
Note: Make sure license file name should be accuraface.license
Permissions required:
Camera Permission
android.permission.CAMERA
Storage Permission required only for print out debug logs.
Step 2 : Open Auto Capture Camera
Customize camera screen (Optional)
FMCameraScreenCustomization cameraScreenCustomization = new FMCameraScreenCustomization(); cameraScreenCustomization.backGroundColor = getResources().getColor(R.color.fm_camera_Background); cameraScreenCustomization.closeIconColor = getResources().getColor(R.color.fm_camera_CloseIcon); cameraScreenCustomization.feedbackBackGroundColor = getResources().getColor(R.color.fm_camera_feedbackBg); cameraScreenCustomization.feedbackTextColor = getResources().getColor(R.color.fm_camera_feedbackText); cameraScreenCustomization.feedbackTextSize = 18; cameraScreenCustomization.feedBackframeMessage = "Frame Your Face"; cameraScreenCustomization.feedBackAwayMessage = "Move Phone Away"; cameraScreenCustomization.feedBackOpenEyesMessage = "Keep Your Eyes Open"; cameraScreenCustomization.feedBackCloserMessage = "Move Phone Closer"; cameraScreenCustomization.feedBackCenterMessage = "Move Phone Center"; cameraScreenCustomization.feedBackMultipleFaceMessage = "Multiple Face Detected"; cameraScreenCustomization.feedBackHeadStraightMessage = "Keep Your Head Straight"; cameraScreenCustomization.feedBackBlurFaceMessage = "Blur Detected Over Face"; cameraScreenCustomization.feedBackGlareFaceMessage = "Glare Detected"; cameraScreenCustomization.feedBackLowLightMessage = "Low light detected"; cameraScreenCustomization.feedbackDialogMessage = "Loading..."; cameraScreenCustomization.feedBackProcessingMessage = "Processing..."; cameraScreenCustomization.showlogo = 0; // Set 0 to hide logo from selfie camera screen cameraScreenCustomization.logoIcon = R.drawable.your_logo; // To set your custom logo // FMCameraScreenCustomization.CAMERA_FACING_FRONT to set selfie camera // FMCameraScreenCustomization.CAMERA_FACING_BACK to set rear camera cameraScreenCustomization.facing = FMCameraScreenCustomization.CAMERA_FACING_FRONT; // 0 for full dark face and 100 for full bright face or set it -1 to remove low light filter cameraScreenCustomization.setLowLightTolerence(-1/*lowLightTolerence*/); // 0 for clean face and 100 for Blurry face or set it -1 to remove blur filter cameraScreenCustomization.setBlurPercentage(80/*blurPercentage*/); // To allow blur on face // Set min and max percentage for glare or set it -1 to remove glare filter cameraScreenCustomization.setGlarePercentage(6/*glareMinPercentage*/, 99/*glareMaxPercentage*/);
Open Camera screen using android Intent.
Intent intent = SelfieFMCameraActivity.getCustomIntent(this, cameraScreenCustomization); startActivityForResult(intent, ACCURA_FACEMATCH_CAMERA);
Receive Capture Image
@Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == RESULT_OK) { if (requestCode == ACCURA_LIVENESS_CAMERA && data != null) { AccuraFMCameraModel result = data.getParcelableExtra("Accura.fm"); if (result == null) { return; } if (result.getStatus().equals("1")) { // result bitmap Bitmap bitmap = result.getFaceBiometrics(); Toast.makeText(this, "Success", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(this, "Failed" + result.getStatus(), Toast.LENGTH_SHORT).show(); } } } }
Step 3 : Implement face match
(Optional) Required storage permission to read image file from internal storage.
Initialize
com.inet.facelock.callback.FaceHelper
in onCreate methodFaceHelper faceHelper = new FaceHelper(/*your activity context*/); faceHelper.setFaceMatchCallBack(this); faceHelper.initEngine();
Set src and target image to faceHelper
Note: Make sure to call "faceHelper.setInputImage" first, followed by "faceHelper.setMatchImage".
Using a File
faceHelper.setInputImage(srcFile); faceHelper.setMatchImage(targetFile);
Using a File URI
faceHelper.setInputImage(srcUri); faceHelper.setMatchImage(targetUri);
Using Path
faceHelper.setInputImage(srcPath); faceHelper.setMatchImage(targetPath);
Using a Bitmap
faceHelper.setInputImage(srcBitmap); faceHelper.setMatchImage(targetBitmap);
Using a file URI by using one function
faceHelper.getFaceMatchScore(srcUri, targetUri);
Using a file by using one function
faceHelper.getFaceMatchScore(srcFile, targetFile);
Implement
com.inet.facelock.callback.FaceCallback
to your Activity and Override following methods to receive data.Received original image in Bitmap format to display on ui as per your requirement
@Override public void onSetInputImage(Bitmap src1) { // set src image to your view image1.setImageBitmap(src1); } @Override public void onSetMatchImage(Bitmap src2) { // set target image to your view image2.setImageBitmap(src2); }
Receive Match score of src and target Image on below override method
@Override public void onFaceMatch(float score) { // get face match score System.out.println("Match Score : " + ss + " %"); }
(Optional) Recomanded override methods for SDK
@Override public void onInitEngine(int ret) { } @Override public void onExtractInit(int ret) { }
Receive Detected Face position on your src and Target Images
// Src Image result @Override public void onLeftDetect(FaceDetectionResult faceResult) { if (faceResult != null) { // do some code Bitmap bitmap = faceResult.getFaceImage(bitmap); // get face Image } } // Target Image Result @Override public void onRightDetect(FaceDetectionResult faceResult) { if (faceResult != null) { // do some code Bitmap bitmap = faceResult.getFaceImage(bitmap); // get face Image } }
Last updated