__version__ = "3.0" from meshroom.core import desc class ImageMasking(desc.CommandLineNode): commandLine = 'aliceVision_imageMasking {allParams}' size = desc.DynamicNodeSize('input') parallelization = desc.Parallelization(blockSize=40) commandLineRange = '--rangeStart {rangeStart} --rangeSize {rangeBlockSize}' inputs = [ desc.File( name='input', label='Input', description='''SfMData file.''', value='', uid=[0], ), desc.ChoiceParam( name='algorithm', label='Algorithm', description='', value='hsv', values=['hsv'], exclusive=True, uid=[0], ), desc.GroupAttribute( name="hsv", label="HSV Parameters", description="""Values to select: - Green: default values - White: Tolerance = 1, minSaturation = 0, maxSaturation = 0.1, minValue = 0.8, maxValue = 1 - Black: Tolerance = 1, minSaturation = 0, maxSaturation = 0.1, minValue = 0, maxValue = 0.2 """, group='', groupDesc=[ desc.FloatParam( name='hsv-hue', label='Hue', description='Hue value to isolate in [0,1] range. 0 = red, 0.33 = green, 0.66 = blue, 1 = red.', semantic='color/hue', value=0.33, range=(0, 1, 0.01), uid=[0] ), desc.FloatParam( name='hsv-hueRange', label='Tolerance', description='Tolerance around the hue value to isolate.', value=0.1, range=(0, 1, 0.01), uid=[0] ), desc.FloatParam( name='hsv-minSaturation', label='Min Saturation', description='Hue is meaningless if saturation is low. Do not mask pixels below this threshold.', value=0.3, range=(0, 1, 0.01), uid=[0] ), desc.FloatParam( name='hsv-maxSaturation', label='Max Saturation', description='Do not mask pixels above this threshold. It might be useful to mask white/black pixels.', value=1, range=(0, 1, 0.01), uid=[0] ), desc.FloatParam( name='hsv-minValue', label='Min Value', description='Hue is meaningless if value is low. Do not mask pixels below this threshold.', value=0.3, range=(0, 1, 0.01), uid=[0] ), desc.FloatParam( name='hsv-maxValue', label='Max Value', description='Do not mask pixels above this threshold. It might be useful to mask white/black pixels.', value=1, range=(0, 1, 0.01), uid=[0] ), ]), desc.BoolParam( name='invert', label='Invert', description='''If ticked, the selected area is ignored. If not, only the selected area is considered.''', value=True, uid=[0] ), desc.IntParam( name='growRadius', label='Grow Radius', description='Grow the selected area. It might be used to fill the holes: then use shrinkRadius to restore the initial coutours.', value=0, range=(0, 50, 1), uid=[0] ), desc.IntParam( name='shrinkRadius', label='Shrink Radius', description='Shrink the selected area.', value=0, range=(0, 50, 1), uid=[0] ), desc.ChoiceParam( name='verboseLevel', label='Verbose Level', description='''verbosity level (fatal, error, warning, info, debug, trace).''', value='info', values=['fatal', 'error', 'warning', 'info', 'debug', 'trace'], exclusive=True, uid=[], ), ] outputs = [ desc.File( name='output', label='Output', description='''Output folder.''', value=desc.Node.internalFolder, uid=[], ), ]