With Viola android face detection library, you can detect faces in a bitmap, crop faces using predefined algorithm and get additional information from the detected faces.
Non-fatal Exception: java.lang.IllegalArgumentException: x must be >= 0
at android.graphics.Bitmap.checkXYSign(Bitmap.java:405)
at android.graphics.Bitmap.createBitmap(Bitmap.java:800)
at android.graphics.Bitmap.createBitmap(Bitmap.java:769)
at com.darwin.viola.still.FaceAnalyser.cropFaceByLeastAlgorithm(FaceAnalyser.kt:246)
at com.darwin.viola.still.FaceAnalyser.cropFace(FaceAnalyser.kt:125)
at com.darwin.viola.still.FaceAnalyser.processFace(FaceAnalyser.kt:87)
at com.darwin.viola.still.FaceAnalyser.analyseMultipleFaces(FaceAnalyser.kt:68)
at com.darwin.viola.still.FaceAnalyser.analyzeFaces(FaceAnalyser.kt:32)
at com.darwin.viola.still.detector.FaceDetectorProcessor.onSuccess(FaceDetectorProcessor.kt:63)
at com.darwin.viola.still.detector.FaceDetectorProcessor.onSuccess(FaceDetectorProcessor.kt:33)
at com.darwin.viola.still.detector.VisionProcessorBase$requestDetectInImage$1.invoke(VisionProcessorBase.kt:48)
at com.darwin.viola.still.detector.VisionProcessorBase$requestDetectInImage$1.invoke(VisionProcessorBase.kt:31)
at com.darwin.viola.still.detector.TaskExtensionsKt$sam$com_google_android_gms_tasks_OnSuccessListener$0.onSuccess(:2)
at com.google.android.gms.tasks.zzm.run(com.google.android.gms:play-services-tasks@@17.2.1:1)
at com.darwin.viola.still.detector.ScopedExecutor$execute$1.run(ScopedExecutor.kt:44)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6942)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
Exception happens while using it with live stream.
Please find the details from logcat below.
java.lang.IllegalArgumentException: width must be > 0 at android.graphics.Bitmap.checkWidthHeight(Bitmap.java:374) at android.graphics.Bitmap.createBitmap(Bitmap.java:665) at android.graphics.Bitmap.createBitmap(Bitmap.java:634) at com.darwin.viola.still.FaceAnalyser.cropFace(FaceAnalyser.kt:220) at com.darwin.viola.still.FaceAnalyser.processFace(FaceAnalyser.kt:96) at com.darwin.viola.still.FaceAnalyser.analyseMultipleFaces(FaceAnalyser.kt:70) at com.darwin.viola.still.FaceAnalyser.analyzeFaces(FaceAnalyser.kt:33) at com.darwin.viola.still.detector.FaceDetectorProcessor.onSuccess(FaceDetectorProcessor.kt:63) at com.darwin.viola.still.detector.FaceDetectorProcessor.onSuccess(FaceDetectorProcessor.kt:33) at com.darwin.viola.still.detector.VisionProcessorBase$requestDetectInImage$1.invoke(VisionProcessorBase.kt:48) at com.darwin.viola.still.detector.VisionProcessorBase$requestDetectInImage$1.invoke(VisionProcessorBase.kt:31) at com.darwin.viola.still.detector.TaskExtensionsKt$sam$com_google_android_gms_tasks_OnSuccessListener$0.onSuccess(TaskExtensions.kt) at com.google.android.gms.tasks.zzm.run(com.google.android.gms:play-services-tasks@@18.0.1:1) at com.darwin.viola.still.detector.ScopedExecutor$execute$1.run(ScopedExecutor.kt:44) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5254) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:902) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:697)