package Ġutil . image . opencv Mat Ċ Ċ import Ġorg . opencv . core . Core Ċ import Ġorg . opencv . core . Mat Ċ import Ġorg . opencv . core . Scalar Ċ Ċ type alias ĠScalar Fn Ġ= Ġ( Mat , ĠScalar , ĠMat ) Ġ-> ĠUnit Ċ Ċ fun ĠMat . create Scalar ( value : ĠDouble ) Ġ= Ġwhen Ġ( channels ()) Ġ{ ĊĠĠ 1 Ġ-> ĠScalar ( value ) ĊĠĠ 2 Ġ-> ĠScalar ( value , Ġvalue ) ĊĠĠ 3 Ġ-> ĠScalar ( value , Ġvalue , Ġvalue ) ĊĠ Ġelse Ġ-> ĠScalar ( value , Ġvalue , Ġvalue , Ġvalue ) Ċ } Ċ Ċ private Ġfun ĠMat . perform ( fn : ĠScalar Fn , Ġs : ĠScalar , Ġin Place : ĠBoolean Ġ= Ġfalse ): ĠMat Ġ{ ĊĠ Ġval Ġdest Ġ= Ġif Ġ( in Place ) Ġthis Ġelse Ġclone Empty () ĊĠ Ġfn ( this , Ġs , Ġdest ) ĊĠ Ġreturn Ġdest Ċ } Ċ Ċ fun ĠMat . multiply ( i : ĠDouble , Ġin Place : ĠBoolean Ġ= Ġfalse ): ĠMat Ġ= ĊĠ Ġperform ( Core :: multiply , Ġcreate Scalar ( i ), Ġin Place ) Ċ Ċ fun ĠMat . divide ( i : ĠDouble , Ġin Place : ĠBoolean Ġ= Ġfalse ): ĠMat Ġ= ĊĠ Ġperform ( Core :: divide , Ġcreate Scalar ( i ), Ġin Place ) Ċ Ċ fun ĠMat . add ( i : ĠDouble , Ġin Place : ĠBoolean Ġ= Ġfalse ): ĠMat Ġ= ĊĠ Ġperform ( Core :: add , Ġcreate Scalar ( i ), Ġin Place ) Ċ Ċ fun ĠMat . subtract ( i : ĠDouble , Ġin Place : ĠBoolean Ġ= Ġfalse ): ĠMat Ġ= ĊĠ Ġperform ( Core :: subtract , Ġcreate Scalar ( i ), Ġin Place ) Ċ