Meshroom/meshroom/nodes/aliceVision/SphereDetection.py
2024-09-12 10:54:18 +02:00

90 lines
2.9 KiB
Python

__version__ = "1.0"
from meshroom.core import desc
from meshroom.core.utils import VERBOSE_LEVEL
class SphereDetection(desc.CommandLineNode):
commandLine = 'aliceVision_sphereDetection {allParams}'
category = 'Photometric Stereo'
documentation = '''
Detect spheres in pictures. These spheres will be used for lighting calibration.
Spheres can be automatically detected or manually defined in the interface.
'''
inputs = [
desc.File(
name="input",
label="SfMData",
description="Input SfMData file.",
value="",
),
desc.File(
name="modelPath",
label="Detection Network",
description="Deep learning network for automatic calibration sphere detection.",
value="${ALICEVISION_SPHERE_DETECTION_MODEL}",
),
desc.BoolParam(
name="autoDetect",
label="Automatic Sphere Detection",
description="Automatic detection of calibration spheres.",
value=False,
),
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,
),
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,
range=(-1000.0, 10000.0, 1.0),
),
desc.FloatParam(
name="y",
label="y",
description="Y offset in pixels.",
value=0.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, 10000.0, 0.1),
enabled=lambda node: not node.autoDetect.value,
),
desc.ChoiceParam(
name="verboseLevel",
label="Verbose Level",
description="Verbosity level (fatal, error, warning, info, debug, trace).",
values=VERBOSE_LEVEL,
value="info",
exclusive=True,
),
]
outputs = [
desc.File(
name="output",
label="Output Path",
description="Sphere detection information will be written here.",
value=desc.Node.internalFolder + "/detection.json",
)
]