コード例 #1
0
    def test_camera(self):
        c = camera.get_cameras_from_opensfm("tests/assets/reconstruction.json")
        self.assertEqual(len(c.keys()), 1)
        camera_id = list(c.keys())[0]
        self.assertTrue('v2 ' not in camera_id)

        self.assertRaises(RuntimeError, camera.get_cameras_from_opensfm,
                          'tests/assets/nonexistant.json')
        self.assertRaises(ValueError, camera.get_cameras_from_opensfm,
                          'tests/assets/gcp_extras.txt')
        self.assertFalse('k1_prior' in c[camera_id])

        # Add bogus field
        c[camera_id]['test'] = 0

        osfm_c = camera.get_opensfm_camera_models(c)
        self.assertEqual(len(osfm_c.keys()), 1)
        c1 = osfm_c[list(osfm_c.keys())[0]]
        self.assertTrue('k1_prior' in c1)
        self.assertTrue('k2_prior' in c1)
        self.assertFalse('test' in c1)
        self.assertEqual(c1['k1'], c1['k1_prior'])
        self.assertEqual(c1['k2'], c1['k2_prior'])
        self.assertEqual(c1['focal'], c1['focal_prior'])
        self.assertTrue('width_prior' not in c1)
コード例 #2
0
 def extract_cameras(self, output, rerun=False):
     if not os.path.exists(output) or rerun:
         try:
             reconstruction_file = self.path("reconstruction.json")
             with open(output, 'w') as fout:
                 fout.write(json.dumps(camera.get_cameras_from_opensfm(reconstruction_file), indent=4))
         except Exception as e:
             log.ODM_WARNING("Cannot export cameras to %s. %s." % (output, str(e)))
     else:
         log.ODM_INFO("Already extracted cameras")