pub struct MultiCameraCalibration { /* private fields */ }
Expand description
Class for multiple camera calibration that supports pinhole camera and omnidirection camera. For omnidirectional camera model, please refer to omnidir.hpp in ccalib module. It first calibrate each camera individually, then a bundle adjustment like optimization is applied to refine extrinsic parameters. So far, it only support “random” pattern for calibration, see randomPattern.hpp in ccalib module for details. Images that are used should be named by “cameraIdx-timestamp.*”, several images with the same timestamp means that they are the same pattern that are photographed. cameraIdx should start from 0.
For more details, please refer to paper B. Li, L. Heng, K. Kevin and M. Pollefeys, “A Multiple-Camera System Calibration Toolbox Using A Feature Descriptor-Based Calibration Pattern”, in IROS 2013.
Implementations§
Source§impl MultiCameraCalibration
impl MultiCameraCalibration
Sourcepub fn new(
camera_type: i32,
n_cameras: i32,
file_name: &str,
pattern_width: f32,
pattern_height: f32,
verbose: i32,
show_extration: i32,
n_mini_matches: i32,
flags: i32,
criteria: TermCriteria,
detector: Ptr<Feature2D>,
descriptor: Ptr<Feature2D>,
matcher: Ptr<DescriptorMatcher>,
) -> Result<MultiCameraCalibration>
pub fn new( camera_type: i32, n_cameras: i32, file_name: &str, pattern_width: f32, pattern_height: f32, verbose: i32, show_extration: i32, n_mini_matches: i32, flags: i32, criteria: TermCriteria, detector: Ptr<Feature2D>, descriptor: Ptr<Feature2D>, matcher: Ptr<DescriptorMatcher>, ) -> Result<MultiCameraCalibration>
§C++ default parameters
- verbose: 0
- show_extration: 0
- n_mini_matches: 20
- flags: 0
- criteria: TermCriteria(TermCriteria::COUNT+TermCriteria::EPS,200,1e-7)
- detector: AKAZE::create(AKAZE::DESCRIPTOR_MLDB,0,3,0.006f)
- descriptor: AKAZE::create(AKAZE::DESCRIPTOR_MLDB,0,3,0.006f)
- matcher: DescriptorMatcher::create(“BruteForce-L1”)
Sourcepub fn new_def(
camera_type: i32,
n_cameras: i32,
file_name: &str,
pattern_width: f32,
pattern_height: f32,
) -> Result<MultiCameraCalibration>
pub fn new_def( camera_type: i32, n_cameras: i32, file_name: &str, pattern_width: f32, pattern_height: f32, ) -> Result<MultiCameraCalibration>
§Note
This alternative version of [new] function uses the following default values for its arguments:
- verbose: 0
- show_extration: 0
- n_mini_matches: 20
- flags: 0
- criteria: TermCriteria(TermCriteria::COUNT+TermCriteria::EPS,200,1e-7)
- detector: AKAZE::create(AKAZE::DESCRIPTOR_MLDB,0,3,0.006f)
- descriptor: AKAZE::create(AKAZE::DESCRIPTOR_MLDB,0,3,0.006f)
- matcher: DescriptorMatcher::create(“BruteForce-L1”)
Trait Implementations§
Source§impl Boxed for MultiCameraCalibration
impl Boxed for MultiCameraCalibration
Source§unsafe fn from_raw(
ptr: <MultiCameraCalibration as OpenCVFromExtern>::ExternReceive,
) -> Self
unsafe fn from_raw( ptr: <MultiCameraCalibration as OpenCVFromExtern>::ExternReceive, ) -> Self
Source§fn into_raw(
self,
) -> <MultiCameraCalibration as OpenCVTypeExternContainer>::ExternSendMut
fn into_raw( self, ) -> <MultiCameraCalibration as OpenCVTypeExternContainer>::ExternSendMut
Source§fn as_raw(
&self,
) -> <MultiCameraCalibration as OpenCVTypeExternContainer>::ExternSend
fn as_raw( &self, ) -> <MultiCameraCalibration as OpenCVTypeExternContainer>::ExternSend
Source§fn as_raw_mut(
&mut self,
) -> <MultiCameraCalibration as OpenCVTypeExternContainer>::ExternSendMut
fn as_raw_mut( &mut self, ) -> <MultiCameraCalibration as OpenCVTypeExternContainer>::ExternSendMut
Source§impl Debug for MultiCameraCalibration
impl Debug for MultiCameraCalibration
Source§impl Drop for MultiCameraCalibration
impl Drop for MultiCameraCalibration
Source§impl MultiCameraCalibrationTrait for MultiCameraCalibration
impl MultiCameraCalibrationTrait for MultiCameraCalibration
fn as_raw_mut_MultiCameraCalibration(&mut self) -> *mut c_void
fn load_images(&mut self) -> Result<()>
fn initialize(&mut self) -> Result<()>
fn optimize_extrinsics(&mut self) -> Result<f64>
fn run(&mut self) -> Result<f64>
fn write_parameters(&mut self, filename: &str) -> Result<()>
Source§impl MultiCameraCalibrationTraitConst for MultiCameraCalibration
impl MultiCameraCalibrationTraitConst for MultiCameraCalibration
fn as_raw_MultiCameraCalibration(&self) -> *const c_void
impl Send for MultiCameraCalibration
Auto Trait Implementations§
impl Freeze for MultiCameraCalibration
impl RefUnwindSafe for MultiCameraCalibration
impl !Sync for MultiCameraCalibration
impl Unpin for MultiCameraCalibration
impl UnwindSafe for MultiCameraCalibration
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<Mat> ModifyInplace for Matwhere
Mat: Boxed,
impl<Mat> ModifyInplace for Matwhere
Mat: Boxed,
Source§unsafe fn modify_inplace<Res>(
&mut self,
f: impl FnOnce(&Mat, &mut Mat) -> Res,
) -> Res
unsafe fn modify_inplace<Res>( &mut self, f: impl FnOnce(&Mat, &mut Mat) -> Res, ) -> Res
Mat
or another similar object. By passing
a mutable reference to the Mat
to this function your closure will get called with the read reference and a write references
to the same Mat
. This is unsafe in a general case as it leads to having non-exclusive mutable access to the internal data,
but it can be useful for some performance sensitive operations. One example of an OpenCV function that allows such in-place
modification is imgproc::threshold
. Read more