Meshroom/meshroom/nodes/aliceVision/SphereDetection.py

91 lines
2.8 KiB
Python

__version__ = "1.0"
from meshroom.core import desc
class SphereDetection(desc.CommandLineNode):
commandLine = 'aliceVision_sphereDetection {allParams}'
category = 'Photometry'
documentation = '''
TODO.
'''
inputs = [
desc.File(
name='input',
label="SfMData",
description='Input SfMData file.',
value='',
uid=[0]
),
desc.File(
name='modelPath',
label='Detection Network',
description='Deep learning network for automatic calibration sphere detection.',
value='${ALICEVISION_SPHERE_DETECTION_MODEL}',
uid=[0]
),
desc.BoolParam(
name='autoDetect',
label='Automatic Sphere Detection',
description='Automatic detection of calibration spheres',
value=False,
uid=[0]
),
desc.FloatParam(
name="minScore",
label="Minimum Score",
description="Minimum score for the detection.",
value=0.0,
range=(0.0, 50.0, 0.01),
advanced=True,
uid=[0]
),
desc.GroupAttribute(
name="sphereCenter",
label="Sphere Center",
description="Center of the circle (XY offset to the center of the image in pixels).",
groupDesc=[
desc.FloatParam(
name="x", label="x", description="X Offset in pixels",
value=0.0,
uid=[0],
range=(-1000.0, 10000.0, 1.0)),
desc.FloatParam(
name="y", label="y", description="Y Offset in pixels",
value=0.0,
uid=[0],
range=(-1000.0, 10000.0, 1.0)),
],
enabled=lambda node: not node.autoDetect.value,
group=None # skip group from command line
),
desc.FloatParam(
name='sphereRadius',
label='Radius',
description='Sphere radius in pixels.',
value=500.0,
range=(0.0, 1000.0, 0.1),
enabled=lambda node: not node.autoDetect.value,
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='Light File Folder',
description='Light information will be written here.',
value=desc.Node.internalFolder,
uid=[]
)
]