mirror of
https://github.com/alicevision/Meshroom.git
synced 2025-06-03 03:11:56 +02:00
[bin][photogrammetry] initialize CameraInit node using 'buildIntrinsics'
* build the complete image files list in meshroom_photogrammetry from input arguments * initialize CameraInit with input sfm data (views/intrinsics) if any * call buildIntrinsics with the resolved input images list
This commit is contained in:
parent
c6a3f0d587
commit
44371211d5
2 changed files with 25 additions and 21 deletions
|
@ -6,14 +6,14 @@ import meshroom
|
|||
meshroom.setupEnvironment()
|
||||
|
||||
import meshroom.core.graph
|
||||
from meshroom.nodes.aliceVision.CameraInit import readSfMData
|
||||
from meshroom import multiview
|
||||
|
||||
parser = argparse.ArgumentParser(description='Launch the full photogrammetry pipeline.')
|
||||
parser.add_argument('--input', metavar='FOLDER', type=str,
|
||||
parser.add_argument('--input', metavar='FOLDER_OR_SFM', type=str,
|
||||
default='',
|
||||
help='Input folder or json file.')
|
||||
help='Input folder with images or SfM file (.sfm, .json).')
|
||||
parser.add_argument('--inputImages', metavar='IMAGES', type=str, nargs='*',
|
||||
default=[],
|
||||
help='Input images.')
|
||||
parser.add_argument('--output', metavar='FOLDER', type=str, required=True,
|
||||
help='Output folder.')
|
||||
|
@ -45,17 +45,28 @@ if not args.input and not args.inputImages:
|
|||
print('Nothing to compute. You need to set --input or --inputImages.')
|
||||
exit(1)
|
||||
|
||||
if args.input and os.path.isfile(args.input):
|
||||
views, intrinsics = readSfMData(args.input)
|
||||
# print(views)
|
||||
# print(intrinsics)
|
||||
|
||||
graph = multiview.photogrammetry(inputViewpoints=views, inputIntrinsics=intrinsics, inputImages=args.inputImages, output=args.output)
|
||||
else:
|
||||
graph = multiview.photogrammetry(inputFolder=args.input, inputImages=args.inputImages, output=args.output)
|
||||
views, intrinsics = [], []
|
||||
# Build image files list from inputImages arguments
|
||||
images = [f for f in args.inputImages if multiview.isImageFile(f)]
|
||||
|
||||
if os.path.isdir(args.input):
|
||||
# args.input is a folder: extend images list with images in that folder
|
||||
images += multiview.findImageFiles(args.input)
|
||||
elif os.path.isfile(args.input) and os.path.splitext(args.input)[-1] in ('.json', '.sfm'):
|
||||
# args.input is a sfmData file: setup pre-calibrated views and intrinsics
|
||||
from meshroom.nodes.aliceVision.CameraInit import readSfMData
|
||||
views, intrinsics = readSfMData(args.input)
|
||||
|
||||
graph = multiview.photogrammetry(inputViewpoints=views, inputIntrinsics=intrinsics, output=args.output)
|
||||
|
||||
graph.findNode('DepthMap_1').downscale.value = args.scale
|
||||
|
||||
cameraInit = graph.findNode('CameraInit')
|
||||
views, intrinsics = cameraInit.nodeDesc.buildIntrinsics(cameraInit, images)
|
||||
cameraInit.viewpoints.value = views
|
||||
cameraInit.intrinsics.value = intrinsics
|
||||
|
||||
if args.save:
|
||||
graph.save(args.save)
|
||||
print('File successfully saved:', args.save)
|
||||
|
|
|
@ -27,12 +27,11 @@ def findImageFiles(folder):
|
|||
return [os.path.join(folder, filename) for filename in os.listdir(folder) if isImageFile(filename)]
|
||||
|
||||
|
||||
def photogrammetry(inputFolder='', inputImages=(), inputViewpoints=(), inputIntrinsics=(), output=''):
|
||||
def photogrammetry(inputImages=list(), inputViewpoints=list(), inputIntrinsics=list(), output=''):
|
||||
"""
|
||||
Create a new Graph with a complete photogrammetry pipeline.
|
||||
|
||||
Args:
|
||||
inputFolder (str, optional): folder containing image files
|
||||
inputImages (list of str, optional): list of image file paths
|
||||
inputViewpoints (list of Viewpoint, optional): list of Viewpoints
|
||||
output (str, optional): the path to export reconstructed model to
|
||||
|
@ -44,15 +43,9 @@ def photogrammetry(inputFolder='', inputImages=(), inputViewpoints=(), inputIntr
|
|||
with GraphModification(graph):
|
||||
sfmNodes, mvsNodes = photogrammetryPipeline(graph)
|
||||
cameraInit = sfmNodes[0]
|
||||
if inputFolder:
|
||||
images = findImageFiles(inputFolder)
|
||||
cameraInit.viewpoints.extend([{'path': image} for image in images])
|
||||
if inputImages:
|
||||
cameraInit.viewpoints.extend([{'path': image} for image in inputImages])
|
||||
if inputViewpoints:
|
||||
cameraInit.viewpoints.extend(inputViewpoints)
|
||||
if inputIntrinsics:
|
||||
cameraInit.intrinsics.extend(inputIntrinsics)
|
||||
cameraInit.viewpoints.extend([{'path': image} for image in inputImages])
|
||||
cameraInit.viewpoints.extend(inputViewpoints)
|
||||
cameraInit.intrinsics.extend(inputIntrinsics)
|
||||
|
||||
if output:
|
||||
texturing = mvsNodes[-1]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue