mirror of
https://github.com/alicevision/Meshroom.git
synced 2025-07-14 23:37:20 +02:00
[cli] add possibility to give a .sfm as input with (optional) intrinsics
This commit is contained in:
parent
863dde26f0
commit
d1d93d337d
2 changed files with 34 additions and 4 deletions
|
@ -1,5 +1,8 @@
|
||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
import argparse
|
import argparse
|
||||||
|
import json
|
||||||
|
import os
|
||||||
|
import io
|
||||||
|
|
||||||
import meshroom
|
import meshroom
|
||||||
meshroom.setupEnvironment()
|
meshroom.setupEnvironment()
|
||||||
|
@ -43,8 +46,34 @@ if not args.input and not args.inputImages:
|
||||||
print('Nothing to compute. You need to set --input or --inputImages.')
|
print('Nothing to compute. You need to set --input or --inputImages.')
|
||||||
exit(1)
|
exit(1)
|
||||||
|
|
||||||
graph = multiview.photogrammetry(inputFolder=args.input, inputImages=args.inputImages, output=args.output)
|
if args.input and os.path.isfile(args.input):
|
||||||
graph.findNode('DepthMap_1').downscale.value = args.scale
|
# with open(args.input) as jsonFile:
|
||||||
|
with io.open(args.input, 'r', encoding='utf-8', errors='ignore') as jsonFile:
|
||||||
|
fileData = json.load(jsonFile)
|
||||||
|
intrinsics = fileData.get("intrinsics", [])
|
||||||
|
print(intrinsics)
|
||||||
|
intrinsics = [{k: v for k, v in item.items()} for item in fileData.get("intrinsics", [])]
|
||||||
|
for intrinsic in intrinsics:
|
||||||
|
pp = intrinsic['principalPoint']
|
||||||
|
intrinsic['principalPoint'] = {}
|
||||||
|
intrinsic['principalPoint']['x'] = pp[0]
|
||||||
|
intrinsic['principalPoint']['y'] = pp[1]
|
||||||
|
# convert empty string distortionParams (i.e: Pinhole model) to empty list
|
||||||
|
if intrinsic['distortionParams'] == '':
|
||||||
|
intrinsic['distortionParams'] = list()
|
||||||
|
print(intrinsics)
|
||||||
|
|
||||||
|
# views = fileData.get("views", [])
|
||||||
|
views = [{k: v for k, v in item.items()} for item in fileData.get("views", [])]
|
||||||
|
for view in views:
|
||||||
|
view['metadata'] = json.dumps(view['metadata']) # convert metadata to string
|
||||||
|
# print(views)
|
||||||
|
|
||||||
|
graph = multiview.photogrammetry(inputViewpoints=views, inputIntrinsics=intrinsics, inputImages=args.inputImages, output=args.output)
|
||||||
|
graph.findNode('DepthMap_1').downscale.value = args.scale
|
||||||
|
else:
|
||||||
|
graph = multiview.photogrammetry(inputFolder=args.input, inputImages=args.inputImages, output=args.output)
|
||||||
|
graph.findNode('DepthMap_1').downscale.value = args.scale
|
||||||
|
|
||||||
if args.save:
|
if args.save:
|
||||||
graph.save(args.save)
|
graph.save(args.save)
|
||||||
|
@ -62,4 +91,3 @@ if args.toNode:
|
||||||
toNodes = graph.findNodes(args.toNode)
|
toNodes = graph.findNodes(args.toNode)
|
||||||
|
|
||||||
meshroom.core.graph.executeGraph(graph, toNodes=toNodes, forceCompute=args.forceCompute, forceStatus=args.forceStatus)
|
meshroom.core.graph.executeGraph(graph, toNodes=toNodes, forceCompute=args.forceCompute, forceStatus=args.forceStatus)
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,7 @@ def findFiles(folder, patterns):
|
||||||
return outFiles
|
return outFiles
|
||||||
|
|
||||||
|
|
||||||
def photogrammetry(inputFolder='', inputImages=(), inputViewpoints=(), output=''):
|
def photogrammetry(inputFolder='', inputImages=(), inputViewpoints=(), inputIntrinsics=(), output=''):
|
||||||
"""
|
"""
|
||||||
Create a new Graph with a complete photogrammetry pipeline.
|
Create a new Graph with a complete photogrammetry pipeline.
|
||||||
|
|
||||||
|
@ -44,6 +44,8 @@ def photogrammetry(inputFolder='', inputImages=(), inputViewpoints=(), output=''
|
||||||
cameraInit.viewpoints.extend([{'path': image} for image in inputImages])
|
cameraInit.viewpoints.extend([{'path': image} for image in inputImages])
|
||||||
if inputViewpoints:
|
if inputViewpoints:
|
||||||
cameraInit.viewpoints.extend(inputViewpoints)
|
cameraInit.viewpoints.extend(inputViewpoints)
|
||||||
|
if inputIntrinsics:
|
||||||
|
cameraInit.intrinsics.extend(inputIntrinsics)
|
||||||
|
|
||||||
if output:
|
if output:
|
||||||
texturing = mvsNodes[-1]
|
texturing = mvsNodes[-1]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue