use std::os::raw::{c_char, c_void};
use libc::{ptrdiff_t, size_t};
use crate::{Error, Result, core, sys, types};
use crate::core::{_InputArray, _OutputArray};
pub const SFM_DISTORTION_MODEL_DIVISION: i32 = 1;
pub const SFM_DISTORTION_MODEL_POLYNOMIAL: i32 = 0;
pub const SFM_IO_BUNDLER: i32 = 0;
pub const SFM_IO_OPENMVG: i32 = 3;
pub const SFM_IO_OPENSFM: i32 = 2;
pub const SFM_IO_THEIASFM: i32 = 4;
pub const SFM_IO_VISUALSFM: i32 = 1;
pub const SFM_REFINE_FOCAL_LENGTH: i32 = (1 << 0);
pub const SFM_REFINE_PRINCIPAL_POINT: i32 = (1 << 1);
pub const SFM_REFINE_RADIAL_DISTORTION_K1: i32 = (1 << 2);
pub const SFM_REFINE_RADIAL_DISTORTION_K2: i32 = (1 << 4);
#[repr(C)]
#[derive(Copy,Clone,Debug,PartialEq)]
pub struct libmv_CameraIntrinsicsOptions {
pub distortion_model: i32,
pub image_width: i32,
pub image_height: i32,
pub focal_length: f64,
pub principal_point_x: f64,
pub principal_point_y: f64,
pub polynomial_k1: f64,
pub polynomial_k2: f64,
pub polynomial_k3: f64,
pub polynomial_p1: f64,
pub polynomial_p2: f64,
pub division_k1: f64,
pub division_k2: f64,
}
#[repr(C)]
#[derive(Copy,Clone,Debug,PartialEq)]
pub struct libmv_ReconstructionOptions {
pub keyframe1: i32,
pub keyframe2: i32,
pub refine_intrinsics: i32,
pub select_keyframes: i32,
pub verbosity_level: i32,
}
pub fn k_rt_from_projection(p: &dyn core::ToInputArray, k: &mut dyn core::ToOutputArray, r: &mut dyn core::ToOutputArray, t: &mut dyn core::ToOutputArray) -> Result<()> {
input_array_arg!(p);
output_array_arg!(k);
output_array_arg!(r);
output_array_arg!(t);
unsafe { sys::cv_sfm_KRtFromProjection__InputArray__OutputArray__OutputArray__OutputArray(p.as_raw__InputArray(), k.as_raw__OutputArray(), r.as_raw__OutputArray(), t.as_raw__OutputArray()) }.into_result()
}
pub fn apply_transformation_to_points(points: &dyn core::ToInputArray, t: &dyn core::ToInputArray, transformed_points: &mut dyn core::ToOutputArray) -> Result<()> {
input_array_arg!(points);
input_array_arg!(t);
output_array_arg!(transformed_points);
unsafe { sys::cv_sfm_applyTransformationToPoints__InputArray__InputArray__OutputArray(points.as_raw__InputArray(), t.as_raw__InputArray(), transformed_points.as_raw__OutputArray()) }.into_result()
}
pub fn compute_orientation(x1: &dyn core::ToInputArray, x2: &dyn core::ToInputArray, r: &mut dyn core::ToOutputArray, t: &mut dyn core::ToOutputArray, s: f64) -> Result<()> {
input_array_arg!(x1);
input_array_arg!(x2);
output_array_arg!(r);
output_array_arg!(t);
unsafe { sys::cv_sfm_computeOrientation__InputArray__InputArray__OutputArray__OutputArray_double(x1.as_raw__InputArray(), x2.as_raw__InputArray(), r.as_raw__OutputArray(), t.as_raw__OutputArray(), s) }.into_result()
}
pub fn depth(r: &dyn core::ToInputArray, t: &dyn core::ToInputArray, x: &dyn core::ToInputArray) -> Result<f64> {
input_array_arg!(r);
input_array_arg!(t);
input_array_arg!(x);
unsafe { sys::cv_sfm_depth__InputArray__InputArray__InputArray(r.as_raw__InputArray(), t.as_raw__InputArray(), x.as_raw__InputArray()) }.into_result()
}
pub fn essential_from_fundamental(f: &dyn core::ToInputArray, k1: &dyn core::ToInputArray, k2: &dyn core::ToInputArray, e: &mut dyn core::ToOutputArray) -> Result<()> {
input_array_arg!(f);
input_array_arg!(k1);
input_array_arg!(k2);
output_array_arg!(e);
unsafe { sys::cv_sfm_essentialFromFundamental__InputArray__InputArray__InputArray__OutputArray(f.as_raw__InputArray(), k1.as_raw__InputArray(), k2.as_raw__InputArray(), e.as_raw__OutputArray()) }.into_result()
}
pub fn essential_from_rt(r1: &dyn core::ToInputArray, t1: &dyn core::ToInputArray, r2: &dyn core::ToInputArray, t2: &dyn core::ToInputArray, e: &mut dyn core::ToOutputArray) -> Result<()> {
input_array_arg!(r1);
input_array_arg!(t1);
input_array_arg!(r2);
input_array_arg!(t2);
output_array_arg!(e);
unsafe { sys::cv_sfm_essentialFromRt__InputArray__InputArray__InputArray__InputArray__OutputArray(r1.as_raw__InputArray(), t1.as_raw__InputArray(), r2.as_raw__InputArray(), t2.as_raw__InputArray(), e.as_raw__OutputArray()) }.into_result()
}
pub fn euclidean_to_homogeneous(src: &dyn core::ToInputArray, dst: &mut dyn core::ToOutputArray) -> Result<()> {
input_array_arg!(src);
output_array_arg!(dst);
unsafe { sys::cv_sfm_euclideanToHomogeneous__InputArray__OutputArray(src.as_raw__InputArray(), dst.as_raw__OutputArray()) }.into_result()
}
pub fn fundamental_from_correspondences7_point_robust(x1: &dyn core::ToInputArray, x2: &dyn core::ToInputArray, max_error: f64, f: &mut dyn core::ToOutputArray, inliers: &mut dyn core::ToOutputArray, outliers_probability: f64) -> Result<f64> {
input_array_arg!(x1);
input_array_arg!(x2);
output_array_arg!(f);
output_array_arg!(inliers);
unsafe { sys::cv_sfm_fundamentalFromCorrespondences7PointRobust__InputArray__InputArray_double__OutputArray__OutputArray_double(x1.as_raw__InputArray(), x2.as_raw__InputArray(), max_error, f.as_raw__OutputArray(), inliers.as_raw__OutputArray(), outliers_probability) }.into_result()
}
pub fn fundamental_from_correspondences8_point_robust(x1: &dyn core::ToInputArray, x2: &dyn core::ToInputArray, max_error: f64, f: &mut dyn core::ToOutputArray, inliers: &mut dyn core::ToOutputArray, outliers_probability: f64) -> Result<f64> {
input_array_arg!(x1);
input_array_arg!(x2);
output_array_arg!(f);
output_array_arg!(inliers);
unsafe { sys::cv_sfm_fundamentalFromCorrespondences8PointRobust__InputArray__InputArray_double__OutputArray__OutputArray_double(x1.as_raw__InputArray(), x2.as_raw__InputArray(), max_error, f.as_raw__OutputArray(), inliers.as_raw__OutputArray(), outliers_probability) }.into_result()
}
pub fn fundamental_from_essential(e: &dyn core::ToInputArray, k1: &dyn core::ToInputArray, k2: &dyn core::ToInputArray, f: &mut dyn core::ToOutputArray) -> Result<()> {
input_array_arg!(e);
input_array_arg!(k1);
input_array_arg!(k2);
output_array_arg!(f);
unsafe { sys::cv_sfm_fundamentalFromEssential__InputArray__InputArray__InputArray__OutputArray(e.as_raw__InputArray(), k1.as_raw__InputArray(), k2.as_raw__InputArray(), f.as_raw__OutputArray()) }.into_result()
}
pub fn fundamental_from_projections(p1: &dyn core::ToInputArray, p2: &dyn core::ToInputArray, f: &mut dyn core::ToOutputArray) -> Result<()> {
input_array_arg!(p1);
input_array_arg!(p2);
output_array_arg!(f);
unsafe { sys::cv_sfm_fundamentalFromProjections__InputArray__InputArray__OutputArray(p1.as_raw__InputArray(), p2.as_raw__InputArray(), f.as_raw__OutputArray()) }.into_result()
}
pub fn homogeneous_to_euclidean(src: &dyn core::ToInputArray, dst: &mut dyn core::ToOutputArray) -> Result<()> {
input_array_arg!(src);
output_array_arg!(dst);
unsafe { sys::cv_sfm_homogeneousToEuclidean__InputArray__OutputArray(src.as_raw__InputArray(), dst.as_raw__OutputArray()) }.into_result()
}
pub fn import_reconstruction(file: &str, rs: &mut dyn core::ToOutputArray, ts: &mut dyn core::ToOutputArray, ks: &mut dyn core::ToOutputArray, points3d: &mut dyn core::ToOutputArray, file_format: i32) -> Result<()> {
string_arg!(file);
output_array_arg!(rs);
output_array_arg!(ts);
output_array_arg!(ks);
output_array_arg!(points3d);
unsafe { sys::cv_sfm_importReconstruction_String__OutputArray__OutputArray__OutputArray__OutputArray_int(file.as_ptr(), rs.as_raw__OutputArray(), ts.as_raw__OutputArray(), ks.as_raw__OutputArray(), points3d.as_raw__OutputArray(), file_format) }.into_result()
}
pub fn isotropic_preconditioner_from_points(points: &dyn core::ToInputArray, t: &mut dyn core::ToOutputArray) -> Result<()> {
input_array_arg!(points);
output_array_arg!(t);
unsafe { sys::cv_sfm_isotropicPreconditionerFromPoints__InputArray__OutputArray(points.as_raw__InputArray(), t.as_raw__OutputArray()) }.into_result()
}
pub fn mean_and_variance_along_rows(a: &dyn core::ToInputArray, mean: &mut dyn core::ToOutputArray, variance: &mut dyn core::ToOutputArray) -> Result<()> {
input_array_arg!(a);
output_array_arg!(mean);
output_array_arg!(variance);
unsafe { sys::cv_sfm_meanAndVarianceAlongRows__InputArray__OutputArray__OutputArray(a.as_raw__InputArray(), mean.as_raw__OutputArray(), variance.as_raw__OutputArray()) }.into_result()
}
pub fn motion_from_essential_choose_solution(rs: &dyn core::ToInputArray, ts: &dyn core::ToInputArray, k1: &dyn core::ToInputArray, x1: &dyn core::ToInputArray, k2: &dyn core::ToInputArray, x2: &dyn core::ToInputArray) -> Result<i32> {
input_array_arg!(rs);
input_array_arg!(ts);
input_array_arg!(k1);
input_array_arg!(x1);
input_array_arg!(k2);
input_array_arg!(x2);
unsafe { sys::cv_sfm_motionFromEssentialChooseSolution__InputArray__InputArray__InputArray__InputArray__InputArray__InputArray(rs.as_raw__InputArray(), ts.as_raw__InputArray(), k1.as_raw__InputArray(), x1.as_raw__InputArray(), k2.as_raw__InputArray(), x2.as_raw__InputArray()) }.into_result()
}
pub fn motion_from_essential(e: &dyn core::ToInputArray, rs: &mut dyn core::ToOutputArray, ts: &mut dyn core::ToOutputArray) -> Result<()> {
input_array_arg!(e);
output_array_arg!(rs);
output_array_arg!(ts);
unsafe { sys::cv_sfm_motionFromEssential__InputArray__OutputArray__OutputArray(e.as_raw__InputArray(), rs.as_raw__OutputArray(), ts.as_raw__OutputArray()) }.into_result()
}
pub fn normalize_fundamental(f: &dyn core::ToInputArray, f_normalized: &mut dyn core::ToOutputArray) -> Result<()> {
input_array_arg!(f);
output_array_arg!(f_normalized);
unsafe { sys::cv_sfm_normalizeFundamental__InputArray__OutputArray(f.as_raw__InputArray(), f_normalized.as_raw__OutputArray()) }.into_result()
}
pub fn normalize_isotropic_points(points: &dyn core::ToInputArray, normalized_points: &mut dyn core::ToOutputArray, t: &mut dyn core::ToOutputArray) -> Result<()> {
input_array_arg!(points);
output_array_arg!(normalized_points);
output_array_arg!(t);
unsafe { sys::cv_sfm_normalizeIsotropicPoints__InputArray__OutputArray__OutputArray(points.as_raw__InputArray(), normalized_points.as_raw__OutputArray(), t.as_raw__OutputArray()) }.into_result()
}
pub fn normalize_points(points: &dyn core::ToInputArray, normalized_points: &mut dyn core::ToOutputArray, t: &mut dyn core::ToOutputArray) -> Result<()> {
input_array_arg!(points);
output_array_arg!(normalized_points);
output_array_arg!(t);
unsafe { sys::cv_sfm_normalizePoints__InputArray__OutputArray__OutputArray(points.as_raw__InputArray(), normalized_points.as_raw__OutputArray(), t.as_raw__OutputArray()) }.into_result()
}
pub fn normalized_eight_point_solver(x1: &dyn core::ToInputArray, x2: &dyn core::ToInputArray, f: &mut dyn core::ToOutputArray) -> Result<()> {
input_array_arg!(x1);
input_array_arg!(x2);
output_array_arg!(f);
unsafe { sys::cv_sfm_normalizedEightPointSolver__InputArray__InputArray__OutputArray(x1.as_raw__InputArray(), x2.as_raw__InputArray(), f.as_raw__OutputArray()) }.into_result()
}
pub fn preconditioner_from_points(points: &dyn core::ToInputArray, t: &mut dyn core::ToOutputArray) -> Result<()> {
input_array_arg!(points);
output_array_arg!(t);
unsafe { sys::cv_sfm_preconditionerFromPoints__InputArray__OutputArray(points.as_raw__InputArray(), t.as_raw__OutputArray()) }.into_result()
}
pub fn projection_from_k_rt(k: &dyn core::ToInputArray, r: &dyn core::ToInputArray, t: &dyn core::ToInputArray, p: &mut dyn core::ToOutputArray) -> Result<()> {
input_array_arg!(k);
input_array_arg!(r);
input_array_arg!(t);
output_array_arg!(p);
unsafe { sys::cv_sfm_projectionFromKRt__InputArray__InputArray__InputArray__OutputArray(k.as_raw__InputArray(), r.as_raw__InputArray(), t.as_raw__InputArray(), p.as_raw__OutputArray()) }.into_result()
}
pub fn projections_from_fundamental(f: &dyn core::ToInputArray, p1: &mut dyn core::ToOutputArray, p2: &mut dyn core::ToOutputArray) -> Result<()> {
input_array_arg!(f);
output_array_arg!(p1);
output_array_arg!(p2);
unsafe { sys::cv_sfm_projectionsFromFundamental__InputArray__OutputArray__OutputArray(f.as_raw__InputArray(), p1.as_raw__OutputArray(), p2.as_raw__OutputArray()) }.into_result()
}
pub fn reconstruct(images: &types::VectorOfString, rs: &mut dyn core::ToOutputArray, ts: &mut dyn core::ToOutputArray, k: &mut dyn core::ToInputOutputArray, points3d: &mut dyn core::ToOutputArray, is_projective: bool) -> Result<()> {
output_array_arg!(rs);
output_array_arg!(ts);
input_output_array_arg!(k);
output_array_arg!(points3d);
unsafe { sys::cv_sfm_reconstruct_VectorOfString__OutputArray__OutputArray__InputOutputArray__OutputArray_bool(images.as_raw_VectorOfString(), rs.as_raw__OutputArray(), ts.as_raw__OutputArray(), k.as_raw__InputOutputArray(), points3d.as_raw__OutputArray(), is_projective) }.into_result()
}
pub fn reconstruct_1(images: &types::VectorOfString, ps: &mut dyn core::ToOutputArray, points3d: &mut dyn core::ToOutputArray, k: &mut dyn core::ToInputOutputArray, is_projective: bool) -> Result<()> {
output_array_arg!(ps);
output_array_arg!(points3d);
input_output_array_arg!(k);
unsafe { sys::cv_sfm_reconstruct_VectorOfString__OutputArray__OutputArray__InputOutputArray_bool(images.as_raw_VectorOfString(), ps.as_raw__OutputArray(), points3d.as_raw__OutputArray(), k.as_raw__InputOutputArray(), is_projective) }.into_result()
}
pub fn reconstruct_2(points2d: &dyn core::ToInputArray, rs: &mut dyn core::ToOutputArray, ts: &mut dyn core::ToOutputArray, k: &mut dyn core::ToInputOutputArray, points3d: &mut dyn core::ToOutputArray, is_projective: bool) -> Result<()> {
input_array_arg!(points2d);
output_array_arg!(rs);
output_array_arg!(ts);
input_output_array_arg!(k);
output_array_arg!(points3d);
unsafe { sys::cv_sfm_reconstruct__InputArray__OutputArray__OutputArray__InputOutputArray__OutputArray_bool(points2d.as_raw__InputArray(), rs.as_raw__OutputArray(), ts.as_raw__OutputArray(), k.as_raw__InputOutputArray(), points3d.as_raw__OutputArray(), is_projective) }.into_result()
}
pub fn reconstruct_3(points2d: &dyn core::ToInputArray, ps: &mut dyn core::ToOutputArray, points3d: &mut dyn core::ToOutputArray, k: &mut dyn core::ToInputOutputArray, is_projective: bool) -> Result<()> {
input_array_arg!(points2d);
output_array_arg!(ps);
output_array_arg!(points3d);
input_output_array_arg!(k);
unsafe { sys::cv_sfm_reconstruct__InputArray__OutputArray__OutputArray__InputOutputArray_bool(points2d.as_raw__InputArray(), ps.as_raw__OutputArray(), points3d.as_raw__OutputArray(), k.as_raw__InputOutputArray(), is_projective) }.into_result()
}
pub fn relative_camera_motion(r1: &dyn core::ToInputArray, t1: &dyn core::ToInputArray, r2: &dyn core::ToInputArray, t2: &dyn core::ToInputArray, r: &mut dyn core::ToOutputArray, t: &mut dyn core::ToOutputArray) -> Result<()> {
input_array_arg!(r1);
input_array_arg!(t1);
input_array_arg!(r2);
input_array_arg!(t2);
output_array_arg!(r);
output_array_arg!(t);
unsafe { sys::cv_sfm_relativeCameraMotion__InputArray__InputArray__InputArray__InputArray__OutputArray__OutputArray(r1.as_raw__InputArray(), t1.as_raw__InputArray(), r2.as_raw__InputArray(), t2.as_raw__InputArray(), r.as_raw__OutputArray(), t.as_raw__OutputArray()) }.into_result()
}
pub fn skew(x: &dyn core::ToInputArray) -> Result<core::Mat> {
input_array_arg!(x);
unsafe { sys::cv_sfm_skew__InputArray(x.as_raw__InputArray()) }.into_result().map(|ptr| core::Mat { ptr })
}
pub fn triangulate_points(points2d: &dyn core::ToInputArray, projection_matrices: &dyn core::ToInputArray, points3d: &mut dyn core::ToOutputArray) -> Result<()> {
input_array_arg!(points2d);
input_array_arg!(projection_matrices);
output_array_arg!(points3d);
unsafe { sys::cv_sfm_triangulatePoints__InputArray__InputArray__OutputArray(points2d.as_raw__InputArray(), projection_matrices.as_raw__InputArray(), points3d.as_raw__OutputArray()) }.into_result()
}
pub trait BaseSFM {
#[inline(always)] fn as_raw_BaseSFM(&self) -> *mut c_void;
fn run(&mut self, points2d: &dyn core::ToInputArray) -> Result<()> {
input_array_arg!(points2d);
unsafe { sys::cv_sfm_BaseSFM_run__InputArray(self.as_raw_BaseSFM(), points2d.as_raw__InputArray()) }.into_result()
}
fn run_1(&mut self, points2d: &dyn core::ToInputArray, k: &mut dyn core::ToInputOutputArray, rs: &mut dyn core::ToOutputArray, ts: &mut dyn core::ToOutputArray, points3d: &mut dyn core::ToOutputArray) -> Result<()> {
input_array_arg!(points2d);
input_output_array_arg!(k);
output_array_arg!(rs);
output_array_arg!(ts);
output_array_arg!(points3d);
unsafe { sys::cv_sfm_BaseSFM_run__InputArray__InputOutputArray__OutputArray__OutputArray__OutputArray(self.as_raw_BaseSFM(), points2d.as_raw__InputArray(), k.as_raw__InputOutputArray(), rs.as_raw__OutputArray(), ts.as_raw__OutputArray(), points3d.as_raw__OutputArray()) }.into_result()
}
fn run_2(&mut self, images: &types::VectorOfString) -> Result<()> {
unsafe { sys::cv_sfm_BaseSFM_run_VectorOfString(self.as_raw_BaseSFM(), images.as_raw_VectorOfString()) }.into_result()
}
fn run_3(&mut self, images: &types::VectorOfString, k: &mut dyn core::ToInputOutputArray, rs: &mut dyn core::ToOutputArray, ts: &mut dyn core::ToOutputArray, points3d: &mut dyn core::ToOutputArray) -> Result<()> {
input_output_array_arg!(k);
output_array_arg!(rs);
output_array_arg!(ts);
output_array_arg!(points3d);
unsafe { sys::cv_sfm_BaseSFM_run_VectorOfString__InputOutputArray__OutputArray__OutputArray__OutputArray(self.as_raw_BaseSFM(), images.as_raw_VectorOfString(), k.as_raw__InputOutputArray(), rs.as_raw__OutputArray(), ts.as_raw__OutputArray(), points3d.as_raw__OutputArray()) }.into_result()
}
fn get_error(&self) -> Result<f64> {
unsafe { sys::cv_sfm_BaseSFM_getError_const(self.as_raw_BaseSFM()) }.into_result()
}
fn get_points(&mut self, points3d: &mut dyn core::ToOutputArray) -> Result<()> {
output_array_arg!(points3d);
unsafe { sys::cv_sfm_BaseSFM_getPoints__OutputArray(self.as_raw_BaseSFM(), points3d.as_raw__OutputArray()) }.into_result()
}
fn get_intrinsics(&self) -> Result<core::Mat> {
unsafe { sys::cv_sfm_BaseSFM_getIntrinsics_const(self.as_raw_BaseSFM()) }.into_result().map(|ptr| core::Mat { ptr })
}
fn get_cameras(&mut self, rs: &mut dyn core::ToOutputArray, ts: &mut dyn core::ToOutputArray) -> Result<()> {
output_array_arg!(rs);
output_array_arg!(ts);
unsafe { sys::cv_sfm_BaseSFM_getCameras__OutputArray__OutputArray(self.as_raw_BaseSFM(), rs.as_raw__OutputArray(), ts.as_raw__OutputArray()) }.into_result()
}
fn set_reconstruction_options(&mut self, libmv_reconstruction_options: crate::sfm::libmv_ReconstructionOptions) -> Result<()> {
unsafe { sys::cv_sfm_BaseSFM_setReconstructionOptions_libmv_ReconstructionOptions(self.as_raw_BaseSFM(), libmv_reconstruction_options) }.into_result()
}
fn set_camera_intrinsic_options(&mut self, libmv_camera_intrinsics_options: crate::sfm::libmv_CameraIntrinsicsOptions) -> Result<()> {
unsafe { sys::cv_sfm_BaseSFM_setCameraIntrinsicOptions_libmv_CameraIntrinsicsOptions(self.as_raw_BaseSFM(), libmv_camera_intrinsics_options) }.into_result()
}
}
pub struct SFMLibmvEuclideanReconstruction {
#[doc(hidden)] pub(crate) ptr: *mut c_void
}
impl Drop for crate::sfm::SFMLibmvEuclideanReconstruction {
fn drop(&mut self) {
unsafe { sys::cv_SFMLibmvEuclideanReconstruction_delete(self.ptr) };
}
}
impl crate::sfm::SFMLibmvEuclideanReconstruction {
#[inline(always)] pub fn as_raw_SFMLibmvEuclideanReconstruction(&self) -> *mut c_void { self.ptr }
pub unsafe fn from_raw_ptr(ptr: *mut c_void) -> Self {
Self { ptr }
}
}
unsafe impl Send for SFMLibmvEuclideanReconstruction {}
impl crate::sfm::BaseSFM for SFMLibmvEuclideanReconstruction {
#[inline(always)] fn as_raw_BaseSFM(&self) -> *mut c_void { self.ptr }
}
impl SFMLibmvEuclideanReconstruction {
pub fn run(&mut self, points2d: &dyn core::ToInputArray) -> Result<()> {
input_array_arg!(points2d);
unsafe { sys::cv_sfm_SFMLibmvEuclideanReconstruction_run__InputArray(self.as_raw_SFMLibmvEuclideanReconstruction(), points2d.as_raw__InputArray()) }.into_result()
}
pub fn run_1(&mut self, points2d: &dyn core::ToInputArray, k: &mut dyn core::ToInputOutputArray, rs: &mut dyn core::ToOutputArray, ts: &mut dyn core::ToOutputArray, points3d: &mut dyn core::ToOutputArray) -> Result<()> {
input_array_arg!(points2d);
input_output_array_arg!(k);
output_array_arg!(rs);
output_array_arg!(ts);
output_array_arg!(points3d);
unsafe { sys::cv_sfm_SFMLibmvEuclideanReconstruction_run__InputArray__InputOutputArray__OutputArray__OutputArray__OutputArray(self.as_raw_SFMLibmvEuclideanReconstruction(), points2d.as_raw__InputArray(), k.as_raw__InputOutputArray(), rs.as_raw__OutputArray(), ts.as_raw__OutputArray(), points3d.as_raw__OutputArray()) }.into_result()
}
pub fn run_2(&mut self, images: &types::VectorOfString) -> Result<()> {
unsafe { sys::cv_sfm_SFMLibmvEuclideanReconstruction_run_VectorOfString(self.as_raw_SFMLibmvEuclideanReconstruction(), images.as_raw_VectorOfString()) }.into_result()
}
pub fn run_3(&mut self, images: &types::VectorOfString, k: &mut dyn core::ToInputOutputArray, rs: &mut dyn core::ToOutputArray, ts: &mut dyn core::ToOutputArray, points3d: &mut dyn core::ToOutputArray) -> Result<()> {
input_output_array_arg!(k);
output_array_arg!(rs);
output_array_arg!(ts);
output_array_arg!(points3d);
unsafe { sys::cv_sfm_SFMLibmvEuclideanReconstruction_run_VectorOfString__InputOutputArray__OutputArray__OutputArray__OutputArray(self.as_raw_SFMLibmvEuclideanReconstruction(), images.as_raw_VectorOfString(), k.as_raw__InputOutputArray(), rs.as_raw__OutputArray(), ts.as_raw__OutputArray(), points3d.as_raw__OutputArray()) }.into_result()
}
pub fn get_error(&self) -> Result<f64> {
unsafe { sys::cv_sfm_SFMLibmvEuclideanReconstruction_getError_const(self.as_raw_SFMLibmvEuclideanReconstruction()) }.into_result()
}
pub fn get_points(&mut self, points3d: &mut dyn core::ToOutputArray) -> Result<()> {
output_array_arg!(points3d);
unsafe { sys::cv_sfm_SFMLibmvEuclideanReconstruction_getPoints__OutputArray(self.as_raw_SFMLibmvEuclideanReconstruction(), points3d.as_raw__OutputArray()) }.into_result()
}
pub fn get_intrinsics(&self) -> Result<core::Mat> {
unsafe { sys::cv_sfm_SFMLibmvEuclideanReconstruction_getIntrinsics_const(self.as_raw_SFMLibmvEuclideanReconstruction()) }.into_result().map(|ptr| core::Mat { ptr })
}
pub fn get_cameras(&mut self, rs: &mut dyn core::ToOutputArray, ts: &mut dyn core::ToOutputArray) -> Result<()> {
output_array_arg!(rs);
output_array_arg!(ts);
unsafe { sys::cv_sfm_SFMLibmvEuclideanReconstruction_getCameras__OutputArray__OutputArray(self.as_raw_SFMLibmvEuclideanReconstruction(), rs.as_raw__OutputArray(), ts.as_raw__OutputArray()) }.into_result()
}
pub fn set_reconstruction_options(&mut self, libmv_reconstruction_options: crate::sfm::libmv_ReconstructionOptions) -> Result<()> {
unsafe { sys::cv_sfm_SFMLibmvEuclideanReconstruction_setReconstructionOptions_libmv_ReconstructionOptions(self.as_raw_SFMLibmvEuclideanReconstruction(), libmv_reconstruction_options) }.into_result()
}
pub fn set_camera_intrinsic_options(&mut self, libmv_camera_intrinsics_options: crate::sfm::libmv_CameraIntrinsicsOptions) -> Result<()> {
unsafe { sys::cv_sfm_SFMLibmvEuclideanReconstruction_setCameraIntrinsicOptions_libmv_CameraIntrinsicsOptions(self.as_raw_SFMLibmvEuclideanReconstruction(), libmv_camera_intrinsics_options) }.into_result()
}
pub fn create(camera_instrinsic_options: crate::sfm::libmv_CameraIntrinsicsOptions, reconstruction_options: crate::sfm::libmv_ReconstructionOptions) -> Result<types::PtrOfSFMLibmvEuclideanReconstruction> {
unsafe { sys::cv_sfm_SFMLibmvEuclideanReconstruction_create_libmv_CameraIntrinsicsOptions_libmv_ReconstructionOptions(camera_instrinsic_options, reconstruction_options) }.into_result().map(|ptr| types::PtrOfSFMLibmvEuclideanReconstruction { ptr })
}
}
impl libmv_CameraIntrinsicsOptions {
pub fn new(_distortion_model: i32, _focal_length: f64, _principal_point_x: f64, _principal_point_y: f64, _polynomial_k1: f64, _polynomial_k2: f64, _polynomial_k3: f64, _polynomial_p1: f64, _polynomial_p2: f64) -> Result<crate::sfm::libmv_CameraIntrinsicsOptions> {
unsafe { sys::cv_sfm_libmv_CameraIntrinsicsOptions_libmv_CameraIntrinsicsOptions_int_double_double_double_double_double_double_double_double(_distortion_model, _focal_length, _principal_point_x, _principal_point_y, _polynomial_k1, _polynomial_k2, _polynomial_k3, _polynomial_p1, _polynomial_p2) }.into_result()
}
}
impl libmv_ReconstructionOptions {
pub fn new(_keyframe1: i32, _keyframe2: i32, _refine_intrinsics: i32, _select_keyframes: i32, _verbosity_level: i32) -> Result<crate::sfm::libmv_ReconstructionOptions> {
unsafe { sys::cv_sfm_libmv_ReconstructionOptions_libmv_ReconstructionOptions_int_int_int_int_int(_keyframe1, _keyframe2, _refine_intrinsics, _select_keyframes, _verbosity_level) }.into_result()
}
}