diff options
author | Severin <julian_eisel@web.de> | 2014-12-04 22:48:11 +0300 |
---|---|---|
committer | Severin <julian_eisel@web.de> | 2014-12-04 22:48:11 +0300 |
commit | 1254e98a48aa92bbf6e707fbc28f42bee17a264f (patch) | |
tree | 8cd67d04e91e3513bb55e5e93d7f78a30c77ddc4 /extern/libmv/intern/reconstruction.cc | |
parent | 151f2467a4c42d787d6d26869dbe402ccb725679 (diff) | |
parent | 226eb53bc7f6d0aa1769b6c889d3b15d1f4944b5 (diff) |
Merge branch 'master' into imeinput_method_editor
Diffstat (limited to 'extern/libmv/intern/reconstruction.cc')
-rw-r--r-- | extern/libmv/intern/reconstruction.cc | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/extern/libmv/intern/reconstruction.cc b/extern/libmv/intern/reconstruction.cc index f89efd8e8ca..046671e467f 100644 --- a/extern/libmv/intern/reconstruction.cc +++ b/extern/libmv/intern/reconstruction.cc @@ -61,6 +61,7 @@ struct libmv_Reconstruction { CameraIntrinsics *intrinsics; double error; + bool is_valid; }; namespace { @@ -289,6 +290,12 @@ libmv_Reconstruction *libmv_solveReconstruction( LG << "number of markers for init: " << keyframe_markers.size(); + if (keyframe_markers.size() < 8) { + LG << "No enough markers to initialize from"; + libmv_reconstruction->is_valid = false; + return libmv_reconstruction; + } + update_callback.invoke(0, "Initial reconstruction"); EuclideanReconstructTwoFrames(keyframe_markers, &reconstruction); @@ -319,6 +326,7 @@ libmv_Reconstruction *libmv_solveReconstruction( progress_update_callback, callback_customdata); + libmv_reconstruction->is_valid = true; return (libmv_Reconstruction *) libmv_reconstruction; } @@ -377,9 +385,14 @@ libmv_Reconstruction *libmv_solveModal( progress_update_callback, callback_customdata); + libmv_reconstruction->is_valid = true; return (libmv_Reconstruction *) libmv_reconstruction; } +int libmv_reconstructionIsValid(libmv_Reconstruction *libmv_reconstruction) { + return libmv_reconstruction->is_valid; +} + void libmv_reconstructionDestroy(libmv_Reconstruction *libmv_reconstruction) { LIBMV_OBJECT_DELETE(libmv_reconstruction->intrinsics, CameraIntrinsics); LIBMV_OBJECT_DELETE(libmv_reconstruction, libmv_Reconstruction); |