diff options
author | Yann Lanthony <yann.lanthony@gmail.com> | 2019-01-29 17:06:58 +0300 |
---|---|---|
committer | Yann Lanthony <yann.lanthony@gmail.com> | 2019-01-29 18:04:39 +0300 |
commit | 44371211d5896dca89e09ad68df1bfcd7154497f (patch) | |
tree | 1d5311f6ecdad47c9c7309326e9eca8cea34ff21 /bin | |
parent | c6a3f0d58718de519d6ef50789b8c640f1e7f9c8 (diff) |
[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
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/meshroom_photogrammetry | 31 |
1 files changed, 21 insertions, 10 deletions
diff --git a/bin/meshroom_photogrammetry b/bin/meshroom_photogrammetry index 966c81d7..8ad506db 100755 --- a/bin/meshroom_photogrammetry +++ b/bin/meshroom_photogrammetry @@ -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) |