View Single Post
Old 1st October 2019, 18:25   #14  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
Fixed a couple of weird problems in previous version.

Code:
ROW      =  True
LIMITLO  =  74.0     # >= is Target
LIMITHI  = 100.0     # <= is Target
INCOLOR  = $008080   # Set where in target range
OUTCOLOR = $FF8080   # Not in target range
SHOW     = True      # Return StackHorizontal, original as Y8, and mask.
MATRIX   = "rec601"  # For ConvertToY8, Match to LimitLo & LimitHi
###############
Colorbars.Trim(0,-100)

MskByRowAveY(Row=ROW,LimitLo=LIMITLO,LimitHi=LIMITHI,InColor=INCOLOR,OutColor=OUTCOLOR,Show=SHOW,matrix=MATRIX)
Return Last

Function  MskByRowAveY(clip c, Bool "Row", Float "LimitLo", Float "LimitHi", Int "InColor", Int "OutColor", Bool "Show",String "Matrix") { # http://forum.doom9.org/showthread.php?p=1886301#post1886301
#   Where AveLuma of pixel Row/Coloumn is between LimitLo<===>LimitHi, then set to Incolor, else OutColor. Colors Specified as YUV, where only Y8 returned.
#   Requires:- Either <Avs v2.60 with Grunt plugin>, OR <Avs+>.
    Function FuncNameExists(String Fn){Try{Eval(Fn+"()")B=True}catch(e){Assert(e.FindStr("syntax")==0,"FuncNameExists: Error in Function Name '"+Fn+"'")B=(e.FindStr("no function named")==0)}Return B}
    Function IsAvsPlus() { Return FuncNameExists("autoloadplugins") }
    Function HasGrunt()  { Return FuncNameExists("GSCriptClip") }
    c                                           myName="MskByRowAveY: "
    Row=Default(Row,true)                       LimitLo=Default(LimitLo,  0.0)          LimitHi=Default(LimitHi,127.5)
    InColor =Default(InColor ,$008080)          OutColor=Default(OutColor,$FF8080)      Show=Default(Show,False)            Matrix=Default(Matrix,"rec601")
    Assert(2.6 <= VersionNumber,myName+"Avs v2.60+ required for Separate/Weave/Rows)")
    Assert(IsAvsPlus || HasGrunt,myName+"Either Avs+ OR Grunt required)")
    Assert(0.0 <= LimitLo <= LimitHi <= 255.0,myName+String(LimitLo,"0.0 <= LimitLo(%f)") + String(LimitHi,"  <= LimitHi(%f) <= 255.0"))
    ConvertToY8(matrix=Matrix).KillAudio        O=Last
    (Row) ? SeparateRows(O.Height)  : SeparateColumns(O.Width)
    InC = Last.BlankClip(Color_YUV= InColor)    OutC= Last.BlankClip(Color_YUV=OutColor)
    Last.ConditionalFilter(InC,OutC,String(LimitLo,"(%f<=AverageLuma<=")+String(LimitHi,"%f)"))
    (Row) ? WeaveRows(O.Height) : WeaveColumns(O.width)
    Return (SHOW) ? StackHorizontal(O,Last) : Last
}
Minor EDITs (and added Matrix arg).

Original


With Row=True


With Row=False
__________________
I sometimes post sober.
StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace

"Some infinities are bigger than other infinities", but how many of them are infinitely bigger ???

Last edited by StainlessS; 5th December 2019 at 20:33.
StainlessS is offline   Reply With Quote