package Ġcom . br ins . fac ere cognition . fac ere cognition Ċ Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . graphics . Camera Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 4 . app . Activity Compat Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . Surface Holder Ċ import Ġandroid . view . Surface View Ċ import Ġandroid . widget . TextView Ċ import Ġkotlinx . android . synt hetic . main . activity _ recognition .* Ċ import Ġorg . opencv . android .* Ċ import Ġorg . opencv . core . Core Ċ import Ġorg . opencv . core . Cv Type Ċ import Ġorg . opencv . core . Mat Ċ Ċ class ĠRecognition Ġ: ĠAppCompatActivity () Ġ, ĠCamera Bridge View Base . Cv Camera View Listener 2 { ĊĊĊĠĠĠ Ġvar ĠTAG Ġ= Ġ" Recognition " ĊĠĠĠ Ġvar Ġcamera Ġ: ĠCamera ? Ġ= Ġnull ĊĠĠĠ Ġinternal Ġvar Ġcameras urface : ĠSurface View ? Ġ= Ġnull ĊĠĠĠ Ġinternal Ġvar Ġholder : ĠSurface Holder ? Ġ= Ġnull ĊĠĠĠ Ġval ĠF OC US _ MODE _ MACRO Ġ= Ġ" macro " ĊĠĠĠ Ġvar Ġjava Camera View Ġ: ĠJava Camera View ? Ġ= Ġnull ĊĠĠĠ Ġlateinit Ġvar Ġm Rg ba Ġ: ĠMat Ċ // ĠĠĠ Ġvar Ġalive Detection : ĠA live Detection Ġ= ĠA live Detection ("/ sd card / Alive Detection ") ĊĊĠĠĠ Ġinternal Ġvar Ġm Loader Callback : ĠBase Loader Callback Ġ= Ġobject Ġ: ĠBase Loader Callback ( this ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Manager Connected ( status : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( status ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBase Loader Callback . SUCCESS Ġ-> Ġjava Camera . enable View () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsuper . on Manager Connected ( status ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠREQUEST _ EXTERNAL _ STORAGE Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠPER MISSION S _ STORAGE Ġ= ĠarrayOf (" android . permission . CAMERA "," android . permission . READ _ EXTERNAL _ STORAGE ", Ġ" android . permission . WRITE _ EXTERNAL _ STORAGE ") ĊĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġwarning : ĠTextView ĊĊĠĠĠ Ġ} ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ recognition ) ĊĠĠĠĠĠĠĠ Ġverify Storage Permissions ( this ) ĊĠĠĠĠĠĠĠ Ġwarning Ġ= ĠInstruction Ċ // ĠĠĠĠĠĠĠ Ġjava Camera View Ġ= Ġjava Camera ĊĠĠĠĠĠĠĠ Ġjava Camera . visibility Ġ= ĠSurface View . VISIBLE ĊĠĠĠĠĠĠĠ Ġjava Camera . set Cv Camera View Listener ( this ) ĊĊĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġverify Storage Permissions Ġ( activity : ĠAppCompatActivity ){ ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Activity Compat . check Self Permission ( activity ," android . permission . WRITE _ EXTERNAL _ STORAGE ") Ġ!= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPackage Manager . PERMISSION _ GRAN TED ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Compat . request Permissions ( activity , PERMISSION S _ STORAGE , REQUEST _ EXTERNAL _ STORAGE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} catch Ġ( e : Exception ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ Ġif Ġ( java Camera != Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjava Camera . disable View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġif Ġ( java Camera != Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjava Camera . disable View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġif ( OpenCV Loader . init Debug ()){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG ," Open cv Ġloaded Ġsuccessfully ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Loader Callback . on Manager Connected ( Loader Callback Interface . SUCCESS ) ĊĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG ," Open cv Ġnot Ġload ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOpenCV Loader . init Async ( OpenCV Loader . OPEN CV _ VERSION _ 3 _ 4 _ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ, this , m Loader Callback ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Camera View Started ( width : ĠInt , Ġheight : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġm Rg ba Ġ= ĠMat ( height Ġ, width Ġ, ĠC v Type . CV _ 8 UC 4 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Camera View Stopped () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġm Rg ba . release () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Camera Frame ( input Frame : ĠCamera Bridge View Base . Cv Camera View Frame ?): ĠMat Ġ{ ĊĊĠĠĠĠĠĠĠ Ġvar Ġgray Ġ= Ġinput Frame !!. gray () ĊĠĠĠĠĠĠĠ Ġm Rg ba Ġ= Ġinput Frame . rgba () Ċ // ĠĠĠĠĠĠĠ Ġif ( is Front ) ĊĠĠĠĠĠĠĠ ĠCore . rotate ( m Rg ba , Ġm Rg ba , ĠCore . ROT ATE _ 9 0 _ CLOCK WISE ); ĊĠĠĠĠĠĠĠ ĠCore . rotate ( gray , Ġgray , ĠCore . ROT ATE _ 9 0 _ CLOCK WISE ); ĊĠĠĠĠĠĠĠ Ġreturn Ġ Ġm Rg ba ĊĠĠĠ Ġ} Ċ } Ċ