1#![deny(missing_docs)]
2#![doc = env!("CARGO_PKG_DESCRIPTION")]
3
4pub mod epnp;
6
7pub mod pnp;
9
10pub mod ransac;
12
13pub use epnp::{EPnP, EPnPParams};
14use kornia_imgproc::calibration::distortion::PolynomialDistortion;
15pub use pnp::{PnPError, PnPResult, PnPSolver};
16pub use ransac::{solve_pnp_ransac, PnPRansacError, PnPRansacResult, RansacParams};
17
18mod ops;
19
20#[derive(Debug, Clone)]
22pub enum PnPMethod {
23 EPnP(EPnPParams),
25 EPnPDefault,
27 }
29
30pub fn solve_pnp(
32 world: &[[f32; 3]],
33 image: &[[f32; 2]],
34 k: &[[f32; 3]; 3],
35 distortion: Option<&PolynomialDistortion>,
36 method: PnPMethod,
37) -> Result<PnPResult, PnPError> {
38 match method {
39 PnPMethod::EPnP(params) => EPnP::solve(world, image, k, distortion, ¶ms),
40 PnPMethod::EPnPDefault => EPnP::solve(world, image, k, distortion, &EPnPParams::default()),
41 }
42}