[multiview] add Graph Modification and convert inputFolder into a list of input files

* Always set a list of input files
* Use GraphModification to do only one update
This commit is contained in:
Fabien Castan 2017-11-06 20:51:22 +01:00
parent 1472baa477
commit 39f6ef3d64

View file

@ -1,16 +1,32 @@
import os import os
import fnmatch
import re
from .core.graph import Graph from .core.graph import Graph, GraphModification
def photogrammetryPipeline(output, inputFolder='', inputImages=[], inputViewpoints=[]): def findFiles(folder, patterns):
rules = [re.compile(fnmatch.translate(pattern), re.IGNORECASE) for pattern in patterns]
outFiles = []
for name in os.listdir(folder):
for rule in rules:
if rule.match(name):
filepath = os.path.join(folder, name)
outFiles.append(filepath)
break
return outFiles
def photogrammetryPipeline(output='', inputFolder='', inputImages=[], inputViewpoints=[]):
# type: () -> Graph # type: () -> Graph
graph = Graph('pipeline') graph = Graph('pipeline')
with GraphModification(graph):
cameraInit = graph.addNewNode('CameraInit') cameraInit = graph.addNewNode('CameraInit')
if inputFolder: if inputFolder:
cameraInit.imageDirectory.value = inputFolder images = findFiles(inputFolder, ['*.jpg', '*.png'])
cameraInit.viewpoints.extend([{'image': image} for image in images])
if inputImages: if inputImages:
cameraInit.viewpoints.value = [{'image': image, 'focal': -1} for image in inputImages] cameraInit.viewpoints.extend([{'image': image} for image in inputImages])
if inputViewpoints: if inputViewpoints:
cameraInit.viewpoints.extend(inputViewpoints) cameraInit.viewpoints.extend(inputViewpoints)
featureExtraction = graph.addNewNode('FeatureExtraction', featureExtraction = graph.addNewNode('FeatureExtraction',