1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
use std::{ ffi::c_void, fmt, }; use crate::{ dnn::{DictValue, LayerParams}, prelude::*, Result, sys, }; impl fmt::Debug for DictValue { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { let mut d = f.debug_struct("DictValue"); d.field("is_int", &self.is_int().map_err(|_| fmt::Error)?) .field("is_real", &self.is_real().map_err(|_| fmt::Error)?) .field("is_string", &self.is_string().map_err(|_| fmt::Error)?); if self.is_string().map_err(|_| fmt::Error)? { d.field("value", &self.get_str(-1).map_err(|_| fmt::Error)?); } else if self.is_int().map_err(|_| fmt::Error)? { d.field("value", &self.get_i64(-1).map_err(|_| fmt::Error)?); } else if self.is_real().map_err(|_| fmt::Error)? { d.field("value", &self.get_f64(-1).map_err(|_| fmt::Error)?); } d.finish() } } impl LayerParams { pub fn default() -> Result<Self> { extern "C" { fn cv_dnn_LayerParams_LayerParams() -> sys::Result<*mut c_void>; } unsafe { cv_dnn_LayerParams_LayerParams() } .into_result() .map(|ptr| unsafe { LayerParams::from_raw(ptr) }) } }