Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'extern/libmv/libmv-capi.cc')
-rw-r--r--extern/libmv/libmv-capi.cc176
1 files changed, 96 insertions, 80 deletions
diff --git a/extern/libmv/libmv-capi.cc b/extern/libmv/libmv-capi.cc
index 1be7ac01b9f..0e25650db79 100644
--- a/extern/libmv/libmv-capi.cc
+++ b/extern/libmv/libmv-capi.cc
@@ -139,7 +139,8 @@ static void imageToFloatBuf(const libmv::FloatImage *image, int channels, float
}
#if defined(DUMP_FAILURE) || defined (DUMP_ALWAYS)
-static void savePNGImage(png_bytep *row_pointers, int width, int height, int depth, int color_type, char *file_name)
+static void savePNGImage(png_bytep *row_pointers, int width, int height, int depth, int color_type,
+ const char *file_name)
{
png_infop info_ptr;
png_structp png_ptr;
@@ -421,10 +422,13 @@ protected:
void *callback_customdata_;
};
-static void libmv_solveRefineIntrinsics(libmv::Tracks *tracks, libmv::CameraIntrinsics *intrinsics,
- libmv::EuclideanReconstruction *reconstruction, int refine_intrinsics,
- reconstruct_progress_update_cb progress_update_callback, void *callback_customdata,
- int bundle_constraints = libmv::BUNDLE_NO_CONSTRAINTS)
+static void libmv_solveRefineIntrinsics(const libmv::Tracks &tracks,
+ const int refine_intrinsics,
+ const int bundle_constraints,
+ reconstruct_progress_update_cb progress_update_callback,
+ void *callback_customdata,
+ libmv::EuclideanReconstruction *reconstruction,
+ libmv::CameraIntrinsics *intrinsics)
{
/* only a few combinations are supported but trust the caller */
int bundle_intrinsics = 0;
@@ -444,15 +448,15 @@ static void libmv_solveRefineIntrinsics(libmv::Tracks *tracks, libmv::CameraIntr
progress_update_callback(callback_customdata, 1.0, "Refining solution");
- libmv::EuclideanBundleCommonIntrinsics(*(libmv::Tracks *)tracks,
+ libmv::EuclideanBundleCommonIntrinsics(tracks,
bundle_intrinsics,
bundle_constraints,
reconstruction,
intrinsics);
}
-static void cameraIntrinsicsFromOptions(libmv::CameraIntrinsics *camera_intrinsics,
- libmv_cameraIntrinsicsOptions *camera_intrinsics_options)
+static void cameraIntrinsicsFromOptions(const libmv_cameraIntrinsicsOptions *camera_intrinsics_options,
+ libmv::CameraIntrinsics *camera_intrinsics)
{
camera_intrinsics->SetFocalLength(camera_intrinsics_options->focal_length,
camera_intrinsics_options->focal_length);
@@ -468,47 +472,47 @@ static void cameraIntrinsicsFromOptions(libmv::CameraIntrinsics *camera_intrinsi
camera_intrinsics_options->image_height);
}
-static libmv::Tracks getNormalizedTracks(libmv::Tracks *tracks, libmv::CameraIntrinsics *camera_intrinsics)
+static libmv::Tracks getNormalizedTracks(const libmv::Tracks &tracks, const libmv::CameraIntrinsics &camera_intrinsics)
{
- libmv::vector<libmv::Marker> markers = tracks->AllMarkers();
+ libmv::vector<libmv::Marker> markers = tracks.AllMarkers();
for (int i = 0; i < markers.size(); ++i) {
- camera_intrinsics->InvertIntrinsics(markers[i].x, markers[i].y,
+ camera_intrinsics.InvertIntrinsics(markers[i].x, markers[i].y,
&(markers[i].x), &(markers[i].y));
}
return libmv::Tracks(markers);
}
-static void finishReconstruction(libmv::Tracks *tracks, libmv::CameraIntrinsics *camera_intrinsics,
+static void finishReconstruction(const libmv::Tracks &tracks, const libmv::CameraIntrinsics &camera_intrinsics,
libmv_Reconstruction *libmv_reconstruction,
reconstruct_progress_update_cb progress_update_callback,
void *callback_customdata)
{
- libmv::EuclideanReconstruction *reconstruction = &libmv_reconstruction->reconstruction;
+ libmv::EuclideanReconstruction &reconstruction = libmv_reconstruction->reconstruction;
/* reprojection error calculation */
progress_update_callback(callback_customdata, 1.0, "Finishing solution");
- libmv_reconstruction->tracks = *tracks;
- libmv_reconstruction->error = libmv::EuclideanReprojectionError(*tracks, *reconstruction, *camera_intrinsics);
+ libmv_reconstruction->tracks = tracks;
+ libmv_reconstruction->error = libmv::EuclideanReprojectionError(tracks, reconstruction, camera_intrinsics);
}
-libmv_Reconstruction *libmv_solveReconstruction(libmv_Tracks *libmv_tracks,
- libmv_cameraIntrinsicsOptions *libmv_camera_intrinsics_options,
- libmv_reconstructionOptions *libmv_reconstruction_options,
+libmv_Reconstruction *libmv_solveReconstruction(const libmv_Tracks *libmv_tracks,
+ const libmv_cameraIntrinsicsOptions *libmv_camera_intrinsics_options,
+ const libmv_reconstructionOptions *libmv_reconstruction_options,
reconstruct_progress_update_cb progress_update_callback,
void *callback_customdata)
{
libmv_Reconstruction *libmv_reconstruction = new libmv_Reconstruction();
- libmv::Tracks *tracks = ((libmv::Tracks *) libmv_tracks);
- libmv::EuclideanReconstruction *reconstruction = &libmv_reconstruction->reconstruction;
- libmv::CameraIntrinsics *camera_intrinsics = &libmv_reconstruction->intrinsics;
+ libmv::Tracks &tracks = *((libmv::Tracks *) libmv_tracks);
+ libmv::EuclideanReconstruction &reconstruction = libmv_reconstruction->reconstruction;
+ libmv::CameraIntrinsics &camera_intrinsics = libmv_reconstruction->intrinsics;
ReconstructUpdateCallback update_callback =
ReconstructUpdateCallback(progress_update_callback, callback_customdata);
- cameraIntrinsicsFromOptions(camera_intrinsics, libmv_camera_intrinsics_options);
+ cameraIntrinsicsFromOptions(libmv_camera_intrinsics_options, &camera_intrinsics);
/* Invert the camera intrinsics */
libmv::Tracks normalized_tracks = getNormalizedTracks(tracks, camera_intrinsics);
@@ -530,20 +534,24 @@ libmv_Reconstruction *libmv_solveReconstruction(libmv_Tracks *libmv_tracks,
update_callback.invoke(0, "Initial reconstruction");
- libmv::EuclideanReconstructTwoFrames(keyframe_markers, reconstruction);
- libmv::EuclideanBundle(normalized_tracks, reconstruction);
+ libmv::EuclideanReconstructTwoFrames(keyframe_markers, &reconstruction);
+ libmv::EuclideanBundle(normalized_tracks, &reconstruction);
libmv::EuclideanCompleteReconstruction(reconstruction_options, normalized_tracks,
- reconstruction, &update_callback);
+ &reconstruction, &update_callback);
/* refinement */
if (libmv_reconstruction_options->refine_intrinsics) {
- libmv_solveRefineIntrinsics((libmv::Tracks *)tracks, camera_intrinsics, reconstruction,
- libmv_reconstruction_options->refine_intrinsics,
- progress_update_callback, callback_customdata);
+ libmv_solveRefineIntrinsics(tracks,
+ libmv_reconstruction_options->refine_intrinsics,
+ libmv::BUNDLE_NO_CONSTRAINTS,
+ progress_update_callback,
+ callback_customdata,
+ &reconstruction,
+ &camera_intrinsics);
}
/* set reconstruction scale to unity */
- libmv::EuclideanScaleToUnity(reconstruction);
+ libmv::EuclideanScaleToUnity(&reconstruction);
/* finish reconstruction */
finishReconstruction(tracks, camera_intrinsics, libmv_reconstruction,
@@ -552,42 +560,44 @@ libmv_Reconstruction *libmv_solveReconstruction(libmv_Tracks *libmv_tracks,
return (libmv_Reconstruction *)libmv_reconstruction;
}
-struct libmv_Reconstruction *libmv_solveModal(struct libmv_Tracks *libmv_tracks,
- libmv_cameraIntrinsicsOptions *libmv_camera_intrinsics_options,
- libmv_reconstructionOptions *libmv_reconstruction_options,
+struct libmv_Reconstruction *libmv_solveModal(const libmv_Tracks *libmv_tracks,
+ const libmv_cameraIntrinsicsOptions *libmv_camera_intrinsics_options,
+ const libmv_reconstructionOptions *libmv_reconstruction_options,
reconstruct_progress_update_cb progress_update_callback,
void *callback_customdata)
{
libmv_Reconstruction *libmv_reconstruction = new libmv_Reconstruction();
- libmv::Tracks *tracks = ((libmv::Tracks *) libmv_tracks);
- libmv::EuclideanReconstruction *reconstruction = &libmv_reconstruction->reconstruction;
- libmv::CameraIntrinsics *camera_intrinsics = &libmv_reconstruction->intrinsics;
+ libmv::Tracks &tracks = *((libmv::Tracks *) libmv_tracks);
+ libmv::EuclideanReconstruction &reconstruction = libmv_reconstruction->reconstruction;
+ libmv::CameraIntrinsics &camera_intrinsics = libmv_reconstruction->intrinsics;
ReconstructUpdateCallback update_callback =
ReconstructUpdateCallback(progress_update_callback, callback_customdata);
- cameraIntrinsicsFromOptions(camera_intrinsics, libmv_camera_intrinsics_options);
+ cameraIntrinsicsFromOptions(libmv_camera_intrinsics_options, &camera_intrinsics);
/* Invert the camera intrinsics. */
libmv::Tracks normalized_tracks = getNormalizedTracks(tracks, camera_intrinsics);
/* Actual reconstruction. */
- libmv::ModalSolver(normalized_tracks, reconstruction, &update_callback);
+ libmv::ModalSolver(normalized_tracks, &reconstruction, &update_callback);
libmv::CameraIntrinsics empty_intrinsics;
libmv::EuclideanBundleCommonIntrinsics(normalized_tracks,
libmv::BUNDLE_NO_INTRINSICS,
libmv::BUNDLE_NO_TRANSLATION,
- reconstruction,
+ &reconstruction,
&empty_intrinsics);
/* Refinement. */
if (libmv_reconstruction_options->refine_intrinsics) {
- libmv_solveRefineIntrinsics((libmv::Tracks *)tracks, camera_intrinsics, reconstruction,
- libmv_reconstruction_options->refine_intrinsics,
- progress_update_callback, callback_customdata,
- libmv::BUNDLE_NO_TRANSLATION);
+ libmv_solveRefineIntrinsics(tracks,
+ libmv_reconstruction_options->refine_intrinsics,
+ libmv::BUNDLE_NO_TRANSLATION,
+ progress_update_callback, callback_customdata,
+ &reconstruction,
+ &camera_intrinsics);
}
/* Finish reconstruction. */
@@ -597,10 +607,10 @@ struct libmv_Reconstruction *libmv_solveModal(struct libmv_Tracks *libmv_tracks,
return (libmv_Reconstruction *)libmv_reconstruction;
}
-int libmv_reporojectionPointForTrack(libmv_Reconstruction *libmv_reconstruction, int track, double pos[3])
+int libmv_reporojectionPointForTrack(const libmv_Reconstruction *libmv_reconstruction, int track, double pos[3])
{
- libmv::EuclideanReconstruction *reconstruction = &libmv_reconstruction->reconstruction;
- libmv::EuclideanPoint *point = reconstruction->PointForTrack(track);
+ const libmv::EuclideanReconstruction *reconstruction = &libmv_reconstruction->reconstruction;
+ const libmv::EuclideanPoint *point = reconstruction->PointForTrack(track);
if(point) {
pos[0] = point->X[0];
@@ -613,8 +623,10 @@ int libmv_reporojectionPointForTrack(libmv_Reconstruction *libmv_reconstruction,
return 0;
}
-static libmv::Marker ProjectMarker(const libmv::EuclideanPoint &point, const libmv::EuclideanCamera &camera,
- const libmv::CameraIntrinsics &intrinsics) {
+static libmv::Marker ProjectMarker(const libmv::EuclideanPoint &point,
+ const libmv::EuclideanCamera &camera,
+ const libmv::CameraIntrinsics &intrinsics)
+{
libmv::Vec3 projected = camera.R * point.X + camera.t;
projected /= projected(2);
@@ -627,10 +639,10 @@ static libmv::Marker ProjectMarker(const libmv::EuclideanPoint &point, const lib
return reprojected_marker;
}
-double libmv_reporojectionErrorForTrack(libmv_Reconstruction *libmv_reconstruction, int track)
+double libmv_reporojectionErrorForTrack(const libmv_Reconstruction *libmv_reconstruction, int track)
{
- libmv::EuclideanReconstruction *reconstruction = &libmv_reconstruction->reconstruction;
- libmv::CameraIntrinsics *intrinsics = &libmv_reconstruction->intrinsics;
+ const libmv::EuclideanReconstruction *reconstruction = &libmv_reconstruction->reconstruction;
+ const libmv::CameraIntrinsics *intrinsics = &libmv_reconstruction->intrinsics;
libmv::vector<libmv::Marker> markers = libmv_reconstruction->tracks.MarkersForTrack(track);
int num_reprojected = 0;
@@ -656,10 +668,10 @@ double libmv_reporojectionErrorForTrack(libmv_Reconstruction *libmv_reconstructi
return total_error / num_reprojected;
}
-double libmv_reporojectionErrorForImage(libmv_Reconstruction *libmv_reconstruction, int image)
+double libmv_reporojectionErrorForImage(const libmv_Reconstruction *libmv_reconstruction, int image)
{
- libmv::EuclideanReconstruction *reconstruction = &libmv_reconstruction->reconstruction;
- libmv::CameraIntrinsics *intrinsics = &libmv_reconstruction->intrinsics;
+ const libmv::EuclideanReconstruction *reconstruction = &libmv_reconstruction->reconstruction;
+ const libmv::CameraIntrinsics *intrinsics = &libmv_reconstruction->intrinsics;
libmv::vector<libmv::Marker> markers = libmv_reconstruction->tracks.MarkersInImage(image);
const libmv::EuclideanCamera *camera = reconstruction->CameraForImage(image);
int num_reprojected = 0;
@@ -687,10 +699,11 @@ double libmv_reporojectionErrorForImage(libmv_Reconstruction *libmv_reconstructi
return total_error / num_reprojected;
}
-int libmv_reporojectionCameraForImage(libmv_Reconstruction *libmv_reconstruction, int image, double mat[4][4])
+int libmv_reporojectionCameraForImage(const libmv_Reconstruction *libmv_reconstruction,
+ int image, double mat[4][4])
{
- libmv::EuclideanReconstruction *reconstruction = &libmv_reconstruction->reconstruction;
- libmv::EuclideanCamera *camera = reconstruction->CameraForImage(image);
+ const libmv::EuclideanReconstruction *reconstruction = &libmv_reconstruction->reconstruction;
+ const libmv::EuclideanCamera *camera = reconstruction->CameraForImage(image);
if(camera) {
for (int j = 0; j < 3; ++j) {
@@ -720,7 +733,7 @@ int libmv_reporojectionCameraForImage(libmv_Reconstruction *libmv_reconstruction
return 0;
}
-double libmv_reprojectionError(libmv_Reconstruction *libmv_reconstruction)
+double libmv_reprojectionError(const libmv_Reconstruction *libmv_reconstruction)
{
return libmv_reconstruction->error;
}
@@ -732,8 +745,9 @@ void libmv_destroyReconstruction(libmv_Reconstruction *libmv_reconstruction)
/* ************ feature detector ************ */
-struct libmv_Features *libmv_detectFeaturesFAST(unsigned char *data, int width, int height, int stride,
- int margin, int min_trackness, int min_distance)
+struct libmv_Features *libmv_detectFeaturesFAST(const unsigned char *data,
+ int width, int height, int stride,
+ int margin, int min_trackness, int min_distance)
{
libmv::Feature *features = NULL;
std::vector<libmv::Feature> v;
@@ -765,8 +779,9 @@ struct libmv_Features *libmv_detectFeaturesFAST(unsigned char *data, int width,
return (libmv_Features *)libmv_features;
}
-struct libmv_Features *libmv_detectFeaturesMORAVEC(unsigned char *data, int width, int height, int stride,
- int margin, int count, int min_distance)
+struct libmv_Features *libmv_detectFeaturesMORAVEC(const unsigned char *data,
+ int width, int height, int stride,
+ int margin, int count, int min_distance)
{
libmv::Feature *features = NULL;
libmv_Features *libmv_features = new libmv_Features;
@@ -789,12 +804,12 @@ struct libmv_Features *libmv_detectFeaturesMORAVEC(unsigned char *data, int widt
return libmv_features;
}
-int libmv_countFeatures(struct libmv_Features *libmv_features)
+int libmv_countFeatures(const libmv_Features *libmv_features)
{
return libmv_features->count;
}
-void libmv_getFeature(struct libmv_Features *libmv_features, int number, double *x, double *y, double *score, double *size)
+void libmv_getFeature(const libmv_Features *libmv_features, int number, double *x, double *y, double *score, double *size)
{
libmv::Feature feature= libmv_features->features[number];
@@ -804,7 +819,7 @@ void libmv_getFeature(struct libmv_Features *libmv_features, int number, double
*size = feature.size;
}
-void libmv_destroyFeatures(struct libmv_Features *libmv_features)
+void libmv_destroyFeatures(libmv_Features *libmv_features)
{
if(libmv_features->features)
delete [] libmv_features->features;
@@ -814,7 +829,8 @@ void libmv_destroyFeatures(struct libmv_Features *libmv_features)
/* ************ camera intrinsics ************ */
-struct libmv_CameraIntrinsics *libmv_ReconstructionExtractIntrinsics(struct libmv_Reconstruction *libmv_Reconstruction) {
+struct libmv_CameraIntrinsics *libmv_ReconstructionExtractIntrinsics(libmv_Reconstruction *libmv_Reconstruction)
+{
return (struct libmv_CameraIntrinsics *)&libmv_Reconstruction->intrinsics;
}
@@ -825,16 +841,16 @@ struct libmv_CameraIntrinsics *libmv_CameraIntrinsicsNewEmpty(void)
return (struct libmv_CameraIntrinsics *) camera_intrinsics;
}
-struct libmv_CameraIntrinsics *libmv_CameraIntrinsicsNew(libmv_cameraIntrinsicsOptions *libmv_camera_intrinsics_options)
+struct libmv_CameraIntrinsics *libmv_CameraIntrinsicsNew(const libmv_cameraIntrinsicsOptions *libmv_camera_intrinsics_options)
{
libmv::CameraIntrinsics *camera_intrinsics = new libmv::CameraIntrinsics();
- cameraIntrinsicsFromOptions(camera_intrinsics, libmv_camera_intrinsics_options);
+ cameraIntrinsicsFromOptions(libmv_camera_intrinsics_options, camera_intrinsics);
return (struct libmv_CameraIntrinsics *) camera_intrinsics;
}
-struct libmv_CameraIntrinsics *libmv_CameraIntrinsicsCopy(struct libmv_CameraIntrinsics *libmvIntrinsics)
+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);
@@ -849,8 +865,8 @@ void libmv_CameraIntrinsicsDestroy(struct libmv_CameraIntrinsics *libmvIntrinsic
delete intrinsics;
}
-void libmv_CameraIntrinsicsUpdate(struct libmv_CameraIntrinsics *libmv_intrinsics,
- libmv_cameraIntrinsicsOptions *libmv_camera_intrinsics_options)
+void libmv_CameraIntrinsicsUpdate(const libmv_cameraIntrinsicsOptions *libmv_camera_intrinsics_options,
+ libmv_CameraIntrinsics *libmv_intrinsics)
{
libmv::CameraIntrinsics *camera_intrinsics = (libmv::CameraIntrinsics *) libmv_intrinsics;
@@ -888,14 +904,14 @@ void libmv_CameraIntrinsicsUpdate(struct libmv_CameraIntrinsics *libmv_intrinsic
}
}
-void libmv_CameraIntrinsicsSetThreads(struct libmv_CameraIntrinsics *libmv_intrinsics, int threads)
+void libmv_CameraIntrinsicsSetThreads(libmv_CameraIntrinsics *libmv_intrinsics, int threads)
{
libmv::CameraIntrinsics *camera_intrinsics = (libmv::CameraIntrinsics *) libmv_intrinsics;
camera_intrinsics->SetThreads(threads);
}
-void libmv_CameraIntrinsicsExtract(struct libmv_CameraIntrinsics *libmv_intrinsics, double *focal_length,
+void libmv_CameraIntrinsicsExtract(const libmv_CameraIntrinsics *libmv_intrinsics, double *focal_length,
double *principal_x, double *principal_y, double *k1, double *k2, double *k3, int *width, int *height)
{
libmv::CameraIntrinsics *camera_intrinsics = (libmv::CameraIntrinsics *) libmv_intrinsics;
@@ -907,7 +923,7 @@ void libmv_CameraIntrinsicsExtract(struct libmv_CameraIntrinsics *libmv_intrinsi
*k2 = camera_intrinsics->k2();
}
-void libmv_CameraIntrinsicsUndistortByte(struct libmv_CameraIntrinsics *libmv_intrinsics,
+void libmv_CameraIntrinsicsUndistortByte(const libmv_CameraIntrinsics *libmv_intrinsics,
unsigned char *src, unsigned char *dst, int width, int height, float overscan, int channels)
{
libmv::CameraIntrinsics *camera_intrinsics = (libmv::CameraIntrinsics *) libmv_intrinsics;
@@ -915,7 +931,7 @@ void libmv_CameraIntrinsicsUndistortByte(struct libmv_CameraIntrinsics *libmv_in
camera_intrinsics->Undistort(src, dst, width, height, overscan, channels);
}
-void libmv_CameraIntrinsicsUndistortFloat(struct libmv_CameraIntrinsics *libmvIntrinsics,
+void libmv_CameraIntrinsicsUndistortFloat(const libmv_CameraIntrinsics *libmvIntrinsics,
float *src, float *dst, int width, int height, float overscan, int channels)
{
libmv::CameraIntrinsics *intrinsics = (libmv::CameraIntrinsics *) libmvIntrinsics;
@@ -923,14 +939,14 @@ void libmv_CameraIntrinsicsUndistortFloat(struct libmv_CameraIntrinsics *libmvIn
intrinsics->Undistort(src, dst, width, height, overscan, channels);
}
-void libmv_CameraIntrinsicsDistortByte(struct libmv_CameraIntrinsics *libmvIntrinsics,
+void libmv_CameraIntrinsicsDistortByte(const libmv_CameraIntrinsics *libmvIntrinsics,
unsigned char *src, unsigned char *dst, int width, int height, float overscan, int channels)
{
libmv::CameraIntrinsics *intrinsics = (libmv::CameraIntrinsics *) libmvIntrinsics;
intrinsics->Distort(src, dst, width, height, overscan, channels);
}
-void libmv_CameraIntrinsicsDistortFloat(struct libmv_CameraIntrinsics *libmvIntrinsics,
+void libmv_CameraIntrinsicsDistortFloat(const libmv_CameraIntrinsics *libmvIntrinsics,
float *src, float *dst, int width, int height, float overscan, int channels)
{
libmv::CameraIntrinsics *intrinsics = (libmv::CameraIntrinsics *) libmvIntrinsics;
@@ -940,12 +956,12 @@ void libmv_CameraIntrinsicsDistortFloat(struct libmv_CameraIntrinsics *libmvIntr
/* ************ utils ************ */
-void libmv_ApplyCameraIntrinsics(libmv_cameraIntrinsicsOptions *libmv_camera_intrinsics_options,
+void libmv_ApplyCameraIntrinsics(const libmv_cameraIntrinsicsOptions *libmv_camera_intrinsics_options,
double x, double y, double *x1, double *y1)
{
libmv::CameraIntrinsics camera_intrinsics;
- cameraIntrinsicsFromOptions(&camera_intrinsics, libmv_camera_intrinsics_options);
+ cameraIntrinsicsFromOptions(libmv_camera_intrinsics_options, &camera_intrinsics);
if (libmv_camera_intrinsics_options->focal_length) {
/* do a lens undistortion if focal length is non-zero only */
@@ -954,12 +970,12 @@ void libmv_ApplyCameraIntrinsics(libmv_cameraIntrinsicsOptions *libmv_camera_int
}
}
-void libmv_InvertCameraIntrinsics(libmv_cameraIntrinsicsOptions *libmv_camera_intrinsics_options,
+void libmv_InvertCameraIntrinsics(const libmv_cameraIntrinsicsOptions *libmv_camera_intrinsics_options,
double x, double y, double *x1, double *y1)
{
libmv::CameraIntrinsics camera_intrinsics;
- cameraIntrinsicsFromOptions(&camera_intrinsics, libmv_camera_intrinsics_options);
+ cameraIntrinsicsFromOptions(libmv_camera_intrinsics_options, &camera_intrinsics);
if (libmv_camera_intrinsics_options->focal_length) {
/* do a lens distortion if focal length is non-zero only */