kopia lustrzana https://github.com/OpenDroneMap/ODM
More memory resiliant openmvs
rodzic
70d2b76c78
commit
c7e93e18dd
|
@ -29,7 +29,7 @@ class GCPFile:
|
||||||
if line != "" and line[0] != "#":
|
if line != "" and line[0] != "#":
|
||||||
parts = line.split()
|
parts = line.split()
|
||||||
if len(parts) >= 6:
|
if len(parts) >= 6:
|
||||||
self.entries.append(line)
|
self.entries.append(line)
|
||||||
else:
|
else:
|
||||||
log.ODM_WARNING("Malformed GCP line: %s" % line)
|
log.ODM_WARNING("Malformed GCP line: %s" % line)
|
||||||
|
|
||||||
|
|
|
@ -103,7 +103,6 @@ class ODMOpenMVSStage(types.ODM_Stage):
|
||||||
system.run('"%s" "%s" %s' % (context.omvs_densify_path,
|
system.run('"%s" "%s" %s' % (context.omvs_densify_path,
|
||||||
openmvs_scene_file,
|
openmvs_scene_file,
|
||||||
' '.join(config + gpu_config + extra_config)))
|
' '.join(config + gpu_config + extra_config)))
|
||||||
|
|
||||||
try:
|
try:
|
||||||
run_densify()
|
run_densify()
|
||||||
except system.SubprocessException as e:
|
except system.SubprocessException as e:
|
||||||
|
@ -113,6 +112,11 @@ class ODMOpenMVSStage(types.ODM_Stage):
|
||||||
log.ODM_WARNING("OpenMVS failed with GPU, is your graphics card driver up to date? Falling back to CPU.")
|
log.ODM_WARNING("OpenMVS failed with GPU, is your graphics card driver up to date? Falling back to CPU.")
|
||||||
gpu_config = ["--cuda-device -2"]
|
gpu_config = ["--cuda-device -2"]
|
||||||
run_densify()
|
run_densify()
|
||||||
|
elif (e.errorCode == 137 or e.errorCode == 3221226505) and not args.pc_tile:
|
||||||
|
log.ODM_WARNING("OpenMVS ran out of memory, we're going to turn on tiling to see if we can process this.")
|
||||||
|
args.pc_tile = True
|
||||||
|
config.append("--fusion-mode 1")
|
||||||
|
run_densify()
|
||||||
else:
|
else:
|
||||||
raise e
|
raise e
|
||||||
|
|
||||||
|
@ -198,6 +202,12 @@ class ODMOpenMVSStage(types.ODM_Stage):
|
||||||
# Merge
|
# Merge
|
||||||
fast_merge_ply(scene_ply_files, tree.openmvs_model)
|
fast_merge_ply(scene_ply_files, tree.openmvs_model)
|
||||||
else:
|
else:
|
||||||
|
def skip_filtering():
|
||||||
|
# Just rename
|
||||||
|
scene_dense_ply = os.path.join(tree.openmvs, 'scene_dense.ply')
|
||||||
|
log.ODM_INFO("Skipped filtering, %s --> %s" % (scene_dense_ply, tree.openmvs_model))
|
||||||
|
os.rename(scene_dense_ply, tree.openmvs_model)
|
||||||
|
|
||||||
# Filter all at once
|
# Filter all at once
|
||||||
if args.pc_filter > 0:
|
if args.pc_filter > 0:
|
||||||
if os.path.exists(scene_dense):
|
if os.path.exists(scene_dense):
|
||||||
|
@ -206,14 +216,18 @@ class ODMOpenMVSStage(types.ODM_Stage):
|
||||||
'-i "%s"' % scene_dense,
|
'-i "%s"' % scene_dense,
|
||||||
"-v 0"
|
"-v 0"
|
||||||
]
|
]
|
||||||
system.run('"%s" %s' % (context.omvs_densify_path, ' '.join(config + gpu_config + extra_config)))
|
try:
|
||||||
|
system.run('"%s" %s' % (context.omvs_densify_path, ' '.join(config + gpu_config + extra_config)))
|
||||||
|
except system.SubprocessException as e:
|
||||||
|
if e.errorCode == 137 or e.errorCode == 3221226505:
|
||||||
|
log.ODM_WARNING("OpenMVS filtering ran out of memory, visibility checks will be skipped.")
|
||||||
|
skip_filtering()
|
||||||
|
else:
|
||||||
|
raise e
|
||||||
else:
|
else:
|
||||||
raise system.ExitException("Cannot find scene_dense.mvs, dense reconstruction probably failed. Exiting...")
|
raise system.ExitException("Cannot find scene_dense.mvs, dense reconstruction probably failed. Exiting...")
|
||||||
else:
|
else:
|
||||||
# Just rename
|
skip_filtering()
|
||||||
scene_dense_ply = os.path.join(tree.openmvs, 'scene_dense.ply')
|
|
||||||
log.ODM_INFO("Skipped filtering, %s --> %s" % (scene_dense_ply, tree.openmvs_model))
|
|
||||||
os.rename(scene_dense_ply, tree.openmvs_model)
|
|
||||||
|
|
||||||
self.update_progress(95)
|
self.update_progress(95)
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue