kopia lustrzana https://github.com/OpenDroneMap/ODM
154 wiersze
4.3 KiB
Python
154 wiersze
4.3 KiB
Python
import unittest
|
|
import os
|
|
import shutil
|
|
|
|
import ecto
|
|
from opendm import config
|
|
from opendm import context
|
|
from scripts.odm_app import ODMApp
|
|
from ecto.opts import scheduler_options, run_plasm
|
|
|
|
parser = config.parser
|
|
scheduler_options(parser)
|
|
options = config.config()
|
|
|
|
|
|
def appSetup(options):
|
|
app = ODMApp(args=options)
|
|
plasm = ecto.Plasm()
|
|
plasm.insert(app)
|
|
return app, plasm
|
|
|
|
|
|
def setup_module():
|
|
# Run tests
|
|
print '%s' % options
|
|
options.project_path = context.tests_data_path
|
|
# options.rerun_all = True
|
|
app, plasm = appSetup(options)
|
|
print 'Run Setup: Initial Run'
|
|
run_plasm(options, plasm)
|
|
# options.rerun_all = False
|
|
|
|
|
|
def teardown_module():
|
|
# Delete generated test directories
|
|
dirnames = ['images_resize', 'opensfm', 'pmvs', 'odm_meshing',
|
|
'odm_texturing', 'odm_georeferencing', 'odm_orthophoto']
|
|
for n in dirnames:
|
|
rmpath = os.path.join(context.tests_data_path, n)
|
|
if os.path.exists(rmpath):
|
|
shutil.rmtree(rmpath)
|
|
|
|
|
|
class TestResize(unittest.TestCase):
|
|
"""
|
|
Tests the resize function
|
|
"""
|
|
|
|
def setUp(self):
|
|
# rerun resize cell and set params
|
|
options.rerun = 'resize'
|
|
options.resize_to = 1600
|
|
# rebuild app
|
|
self.app, self.plasm = appSetup(options)
|
|
run_plasm(options, self.plasm)
|
|
|
|
|
|
def test_resize(self):
|
|
# assert each image is sized to the option.resize_to
|
|
self.assertEquals(max(self.app.resize.outputs.photos[0].height, self.app.resize.outputs.photos[0].width),
|
|
options.resize_to)
|
|
|
|
def test_all_resized(self):
|
|
# assert the number of images in images == number of images in resize
|
|
self.assertEquals(len(self.app.resize.outputs.photos), len(self.app.dataset.outputs.photos))
|
|
|
|
|
|
class TestOpenSfM(unittest.TestCase):
|
|
"""
|
|
Tests the OpenSfM module
|
|
"""
|
|
def setUp(self):
|
|
options.rerun = 'opensfm'
|
|
self.app, self.plasm = appSetup(options)
|
|
run_plasm(options, self.plasm)
|
|
|
|
def test_opensfm(self):
|
|
# Test configuration
|
|
self.assertTrue(os.path.isfile(self.app.opensfm.inputs.tree.opensfm_reconstruction))
|
|
|
|
|
|
class TestCMVS(unittest.TestCase):
|
|
|
|
def setUp(self):
|
|
options.rerun = 'cmvs'
|
|
self.app, self.plasm = appSetup(options)
|
|
run_plasm(options, self.plasm)
|
|
|
|
def test_cmvs(self):
|
|
self.assertTrue(os.path.isfile(self.app.cmvs.inputs.tree.pmvs_bundle))
|
|
|
|
|
|
class TestPMVS(unittest.TestCase):
|
|
|
|
def setUp(self):
|
|
options.rerun = 'pmvs'
|
|
self.app, self.plasm = appSetup(options)
|
|
run_plasm(options, self.plasm)
|
|
|
|
def test_pmvs(self):
|
|
self.assertTrue(os.path.isfile(self.app.pmvs.inputs.tree.pmvs_model))
|
|
|
|
|
|
class TestMeshing(unittest.TestCase):
|
|
|
|
def setUp(self):
|
|
options.rerun = 'odm_meshing'
|
|
self.app, self.plasm = appSetup(options)
|
|
run_plasm(options, self.plasm)
|
|
|
|
def test_meshing(self):
|
|
self.assertTrue(os.path.isfile(self.app.meshing.inputs.tree.odm_mesh))
|
|
|
|
|
|
class TestTexturing(unittest.TestCase):
|
|
|
|
def setUp(self):
|
|
options.rerun = 'odm_texturing'
|
|
self.app, self.plasm = appSetup(options)
|
|
run_plasm(options, self.plasm)
|
|
|
|
def test_texturing(self):
|
|
self.assertTrue(os.path.isfile(self.app.texturing.inputs.tree.odm_textured_model_obj))
|
|
|
|
|
|
class TestGeoreferencing(unittest.TestCase):
|
|
|
|
def setUp(self):
|
|
options.rerun = 'odm_georeferencing'
|
|
self.app, self.plasm = appSetup(options)
|
|
run_plasm(options, self.plasm)
|
|
|
|
def test_georef(self):
|
|
self.assertTrue(os.path.isfile(self.app.georeferencing.inputs.tree.odm_georeferencing_coords) &
|
|
os.path.isfile(self.app.georeferencing.inputs.tree.odm_georeferencing_model_obj_geo))
|
|
|
|
def test_las_out(self):
|
|
self.assertTrue(os.path.isfile(os.path.join(self.app.georeferencing.inputs.tree.odm_georeferencing,
|
|
"odm_georeferenced_model.ply.las")))
|
|
|
|
|
|
class TestOrthophoto(unittest.TestCase):
|
|
|
|
def setUp(self):
|
|
options.rerun = 'odm_orthophoto'
|
|
self.app, self.plasm = appSetup(options)
|
|
run_plasm(options, self.plasm)
|
|
|
|
def test_orthophoto(self):
|
|
self.assertTrue(os.path.isfile(self.app.orthophoto.inputs.tree.odm_orthophoto_file))
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main() |