diff options
Diffstat (limited to 'extern/libmv/libmv-capi.cc')
-rw-r--r-- | extern/libmv/libmv-capi.cc | 53 |
1 files changed, 24 insertions, 29 deletions
diff --git a/extern/libmv/libmv-capi.cc b/extern/libmv/libmv-capi.cc index a8f396d5df1..11608318a40 100644 --- a/extern/libmv/libmv-capi.cc +++ b/extern/libmv/libmv-capi.cc @@ -43,10 +43,10 @@ # include <png.h> #endif +#include "libmv-capi_intern.h" #include "libmv/logging/logging.h" - +#include "libmv/multiview/homography.h" #include "libmv/tracking/track_region.h" - #include "libmv/simple_pipeline/callbacks.h" #include "libmv/simple_pipeline/tracks.h" #include "libmv/simple_pipeline/initialize_reconstruction.h" @@ -58,12 +58,6 @@ #include "libmv/simple_pipeline/reconstruction_scale.h" #include "libmv/simple_pipeline/keyframe_selection.h" -#include "libmv/multiview/homography.h" - -#ifdef _MSC_VER -# define snprintf _snprintf -#endif - struct libmv_Reconstruction { libmv::EuclideanReconstruction reconstruction; @@ -388,14 +382,15 @@ void libmv_samplePlanarPatch(const float *image, int width, int height, struct libmv_Tracks *libmv_tracksNew(void) { - libmv::Tracks *libmv_tracks = new libmv::Tracks(); + libmv::Tracks *libmv_tracks = LIBMV_OBJECT_NEW(libmv::Tracks); return (struct libmv_Tracks *)libmv_tracks; } void libmv_tracksDestroy(struct libmv_Tracks *libmv_tracks) { - delete (libmv::Tracks*) libmv_tracks; + using libmv::Tracks; + LIBMV_OBJECT_DELETE(libmv_tracks, Tracks); } void libmv_tracksInsert(struct libmv_Tracks *libmv_tracks, int image, int track, double x, double y) @@ -578,7 +573,7 @@ struct libmv_Reconstruction *libmv_solveReconstruction(const struct libmv_Tracks reconstruct_progress_update_cb progress_update_callback, void *callback_customdata) { - struct libmv_Reconstruction *libmv_reconstruction = new libmv_Reconstruction(); + struct libmv_Reconstruction *libmv_reconstruction = LIBMV_OBJECT_NEW(libmv_Reconstruction); libmv::Tracks &tracks = *((libmv::Tracks *) libmv_tracks); libmv::EuclideanReconstruction &reconstruction = libmv_reconstruction->reconstruction; @@ -660,7 +655,7 @@ struct libmv_Reconstruction *libmv_solveModal(const struct libmv_Tracks *libmv_t reconstruct_progress_update_cb progress_update_callback, void *callback_customdata) { - struct libmv_Reconstruction *libmv_reconstruction = new libmv_Reconstruction(); + struct libmv_Reconstruction *libmv_reconstruction = LIBMV_OBJECT_NEW(libmv_Reconstruction); libmv::Tracks &tracks = *((libmv::Tracks *) libmv_tracks); libmv::EuclideanReconstruction &reconstruction = libmv_reconstruction->reconstruction; @@ -703,7 +698,7 @@ struct libmv_Reconstruction *libmv_solveModal(const struct libmv_Tracks *libmv_t void libmv_reconstructionDestroy(struct libmv_Reconstruction *libmv_reconstruction) { - delete libmv_reconstruction; + LIBMV_OBJECT_DELETE(libmv_reconstruction, libmv_Reconstruction); } int libmv_reprojectionPointForTrack(const struct libmv_Reconstruction *libmv_reconstruction, int track, double pos[3]) @@ -850,7 +845,7 @@ struct libmv_Features *libmv_detectFeaturesFAST(const unsigned char *data, { libmv::Feature *features = NULL; std::vector<libmv::Feature> v; - struct libmv_Features *libmv_features = new libmv_Features(); + struct libmv_Features *libmv_features = LIBMV_STRUCT_NEW(libmv_Features, 1); int i = 0, count; if (margin) { @@ -864,7 +859,7 @@ struct libmv_Features *libmv_detectFeaturesFAST(const unsigned char *data, count = v.size(); if (count) { - features = new libmv::Feature[count]; + features = LIBMV_STRUCT_NEW(libmv::Feature, count); for(std::vector<libmv::Feature>::iterator it = v.begin(); it != v.end(); it++) { features[i++] = *it; @@ -883,7 +878,7 @@ struct libmv_Features *libmv_detectFeaturesMORAVEC(const unsigned char *data, int margin, int count, int min_distance) { libmv::Feature *features = NULL; - struct libmv_Features *libmv_features = new libmv_Features; + struct libmv_Features *libmv_features = LIBMV_STRUCT_NEW(libmv_Features, 1); if (count) { if (margin) { @@ -892,7 +887,7 @@ struct libmv_Features *libmv_detectFeaturesMORAVEC(const unsigned char *data, height -= 2 * margin; } - features = new libmv::Feature[count]; + features = LIBMV_STRUCT_NEW(libmv::Feature, count); libmv::DetectMORAVEC(data, stride, width, height, features, &count, min_distance, NULL); } @@ -905,10 +900,11 @@ struct libmv_Features *libmv_detectFeaturesMORAVEC(const unsigned char *data, void libmv_featuresDestroy(struct libmv_Features *libmv_features) { - if (libmv_features->features) - delete [] libmv_features->features; + if (libmv_features->features) { + LIBMV_STRUCT_DELETE(libmv_features->features); + } - delete libmv_features; + LIBMV_STRUCT_DELETE(libmv_features); } int libmv_countFeatures(const struct libmv_Features *libmv_features) @@ -930,14 +926,14 @@ void libmv_getFeature(const struct libmv_Features *libmv_features, int number, d struct libmv_CameraIntrinsics *libmv_cameraIntrinsicsNewEmpty(void) { - libmv::CameraIntrinsics *camera_intrinsics = new libmv::CameraIntrinsics(); + libmv::CameraIntrinsics *camera_intrinsics = LIBMV_OBJECT_NEW(libmv::CameraIntrinsics); return (struct libmv_CameraIntrinsics *) camera_intrinsics; } struct libmv_CameraIntrinsics *libmv_cameraIntrinsicsNew(const libmv_CameraIntrinsicsOptions *libmv_camera_intrinsics_options) { - libmv::CameraIntrinsics *camera_intrinsics = new libmv::CameraIntrinsics(); + libmv::CameraIntrinsics *camera_intrinsics = LIBMV_OBJECT_NEW(libmv::CameraIntrinsics); cameraIntrinsicsFromOptions(libmv_camera_intrinsics_options, camera_intrinsics); @@ -947,16 +943,15 @@ struct libmv_CameraIntrinsics *libmv_cameraIntrinsicsNew(const libmv_CameraIntri struct libmv_CameraIntrinsics *libmv_cameraIntrinsicsCopy(const libmv_CameraIntrinsics *libmvIntrinsics) { libmv::CameraIntrinsics *orig_intrinsics = (libmv::CameraIntrinsics *) libmvIntrinsics; - libmv::CameraIntrinsics *new_intrinsics = new libmv::CameraIntrinsics(*orig_intrinsics); + libmv::CameraIntrinsics *new_intrinsics = LIBMV_OBJECT_NEW(libmv::CameraIntrinsics, *orig_intrinsics); return (struct libmv_CameraIntrinsics *) new_intrinsics; } void libmv_cameraIntrinsicsDestroy(struct libmv_CameraIntrinsics *libmvIntrinsics) { - libmv::CameraIntrinsics *intrinsics = (libmv::CameraIntrinsics *) libmvIntrinsics; - - delete intrinsics; + using libmv::CameraIntrinsics; + LIBMV_OBJECT_DELETE(libmvIntrinsics, CameraIntrinsics); } void libmv_cameraIntrinsicsUpdate(const libmv_CameraIntrinsicsOptions *libmv_camera_intrinsics_options, @@ -1082,8 +1077,7 @@ void libmv_cameraIntrinsicsInvert(const libmv_CameraIntrinsicsOptions *libmv_cam } } -void libmv_homography2DFromCorrespondencesLinear(double (*x1)[2], double (*x2)[2], int num_points, - double H[3][3], double expected_precision) +void libmv_homography2DFromCorrespondencesEuc(double (*x1)[2], double (*x2)[2], int num_points, double H[3][3]) { libmv::Mat x1_mat, x2_mat; libmv::Mat3 H_mat; @@ -1099,7 +1093,8 @@ void libmv_homography2DFromCorrespondencesLinear(double (*x1)[2], double (*x2)[2 LG << "x1: " << x1_mat; LG << "x2: " << x2_mat; - libmv::Homography2DFromCorrespondencesLinear(x1_mat, x2_mat, &H_mat, expected_precision); + libmv::HomographyEstimationOptions options; + libmv::Homography2DFromCorrespondencesEuc(x1_mat, x2_mat, options, &H_mat); LG << "H: " << H_mat; |