1+ #include " FilterParamsBindings.hpp"
2+
3+ #include " depthai/pipeline/FilterParams.hpp"
4+
5+ void FilterParamsBindings::bind (pybind11::module & m, void * pCallstack) {
6+ // dai.filters.params
7+ py::module_ filters = m.def_submodule (" filters" , " Parameters for filters" );
8+ py::module_ params = filters.def_submodule (" params" , " Parameters for filters" );
9+
10+ // -- Median Filter --
11+ py::enum_<dai::filters::params::MedianFilter> medianFilter (params, " MedianFilter" );
12+ medianFilter.value (" MEDIAN_OFF" , dai::filters::params::MedianFilter::MEDIAN_OFF)
13+ .value (" KERNEL_3x3" , dai::filters::params::MedianFilter::KERNEL_3x3)
14+ .value (" KERNEL_5x5" , dai::filters::params::MedianFilter::KERNEL_5x5)
15+ .value (" KERNEL_7x7" , dai::filters::params::MedianFilter::KERNEL_7x7)
16+ .def (" __str__" , [](const dai::filters::params::MedianFilter& self) { return py::str (" MedianFilter({})" ).format (self); });
17+
18+ // -- Spatial Filter --
19+ py::class_<dai::filters::params::SpatialFilter> spatialFilter (params, " SpatialFilter" );
20+ spatialFilter.def (py::init<>())
21+ .def_readwrite (" enable" , &dai::filters::params::SpatialFilter::enable, DOC (dai, filters, params, SpatialFilter, enable))
22+ .def_readwrite (
23+ " holeFillingRadius" , &dai::filters::params::SpatialFilter::holeFillingRadius, DOC (dai, filters, params, SpatialFilter, holeFillingRadius))
24+ .def_readwrite (" alpha" , &dai::filters::params::SpatialFilter::alpha, DOC (dai, filters, params, SpatialFilter, alpha))
25+ .def_readwrite (" delta" , &dai::filters::params::SpatialFilter::delta, DOC (dai, filters, params, SpatialFilter, delta))
26+ .def_readwrite (" numIterations" , &dai::filters::params::SpatialFilter::numIterations, DOC (dai, filters, params, SpatialFilter, numIterations))
27+ .def (" __str__" , [](const dai::filters::params::SpatialFilter& self) {
28+ return py::str (" SpatialFilter(enable={}, holeFillingRadius={}, alpha={}, delta={}, numIterations={})" )
29+ .format (self.enable , self.holeFillingRadius , self.alpha , self.delta , self.numIterations );
30+ });
31+
32+ // -- Temporal Filter --
33+ py::class_<dai::filters::params::TemporalFilter> temporalFilter (params, " TemporalFilter" , DOC (dai, filters, params, TemporalFilter));
34+ temporalFilter.def (py::init<>())
35+ .def_readwrite (" enable" , &dai::filters::params::TemporalFilter::enable, DOC (dai, filters, params, TemporalFilter, enable))
36+ .def_readwrite (" persistencyMode" , &dai::filters::params::TemporalFilter::persistencyMode, DOC (dai, filters, params, TemporalFilter, persistencyMode))
37+ .def_readwrite (" alpha" , &dai::filters::params::TemporalFilter::alpha, DOC (dai, filters, params, TemporalFilter, alpha))
38+ .def_readwrite (" delta" , &dai::filters::params::TemporalFilter::delta, DOC (dai, filters, params, TemporalFilter, delta))
39+ .def (" __str__" , [](const dai::filters::params::TemporalFilter& self) {
40+ return py::str (" TemporalFilter(enable={}, persistencyMode={}, alpha={}, delta={})" )
41+ .format (self.enable , self.persistencyMode , self.alpha , self.delta );
42+ });
43+
44+ py::enum_<dai::filters::params::TemporalFilter::PersistencyMode> persistencyMode (
45+ temporalFilter, " PersistencyMode" , DOC (dai, filters, params, TemporalFilter, PersistencyMode));
46+ persistencyMode
47+ .value (" PERSISTENCY_OFF" ,
48+ dai::filters::params::TemporalFilter::PersistencyMode::PERSISTENCY_OFF,
49+ DOC (dai, filters, params, TemporalFilter, PersistencyMode, PERSISTENCY_OFF))
50+ .value (" VALID_8_OUT_OF_8" ,
51+ dai::filters::params::TemporalFilter::PersistencyMode::VALID_8_OUT_OF_8,
52+ DOC (dai, filters, params, TemporalFilter, PersistencyMode, VALID_8_OUT_OF_8))
53+ .value (" VALID_2_IN_LAST_3" ,
54+ dai::filters::params::TemporalFilter::PersistencyMode::VALID_2_IN_LAST_3,
55+ DOC (dai, filters, params, TemporalFilter, PersistencyMode, VALID_2_IN_LAST_3))
56+ .value (" VALID_2_IN_LAST_4" ,
57+ dai::filters::params::TemporalFilter::PersistencyMode::VALID_2_IN_LAST_4,
58+ DOC (dai, filters, params, TemporalFilter, PersistencyMode, VALID_2_IN_LAST_4))
59+ .value (" VALID_2_OUT_OF_8" ,
60+ dai::filters::params::TemporalFilter::PersistencyMode::VALID_2_OUT_OF_8,
61+ DOC (dai, filters, params, TemporalFilter, PersistencyMode, VALID_2_OUT_OF_8))
62+ .value (" VALID_1_IN_LAST_2" ,
63+ dai::filters::params::TemporalFilter::PersistencyMode::VALID_1_IN_LAST_2,
64+ DOC (dai, filters, params, TemporalFilter, PersistencyMode, VALID_1_IN_LAST_2))
65+ .value (" VALID_1_IN_LAST_5" ,
66+ dai::filters::params::TemporalFilter::PersistencyMode::VALID_1_IN_LAST_5,
67+ DOC (dai, filters, params, TemporalFilter, PersistencyMode, VALID_1_IN_LAST_5))
68+ .value (" VALID_1_IN_LAST_8" ,
69+ dai::filters::params::TemporalFilter::PersistencyMode::VALID_1_IN_LAST_8,
70+ DOC (dai, filters, params, TemporalFilter, PersistencyMode, VALID_1_IN_LAST_8))
71+ .value (" PERSISTENCY_INDEFINITELY" ,
72+ dai::filters::params::TemporalFilter::PersistencyMode::PERSISTENCY_INDEFINITELY,
73+ DOC (dai, filters, params, TemporalFilter, PersistencyMode, PERSISTENCY_INDEFINITELY));
74+
75+ // -- Speckle filter --
76+ py::class_<dai::filters::params::SpeckleFilter> speckleFilter (params, " SpeckleFilter" );
77+ speckleFilter.def (py::init<>())
78+ .def_readwrite (" enable" , &dai::filters::params::SpeckleFilter::enable, DOC (dai, filters, params, SpeckleFilter, enable))
79+ .def_readwrite (" speckleRange" , &dai::filters::params::SpeckleFilter::speckleRange, DOC (dai, filters, params, SpeckleFilter, speckleRange))
80+ .def_readwrite (
81+ " differenceThreshold" , &dai::filters::params::SpeckleFilter::differenceThreshold, DOC (dai, filters, params, SpeckleFilter, differenceThreshold))
82+ .def (" __str__" , [](const dai::filters::params::SpeckleFilter& self) {
83+ return py::str (" SpeckleFilter(enable={}, speckleRange={}, differenceThreshold={})" )
84+ .format (self.enable , self.speckleRange , self.differenceThreshold );
85+ });
86+
87+ // Aliases for backward compatibility
88+ m.attr (" MedianFilter" ) = medianFilter;
89+ m.attr (" StereoDepthConfig" ).attr (" MedianFilter" ) = medianFilter;
90+ m.attr (" StereoDepthConfig" ).attr (" PostProcessing" ).attr (" SpatialFilter" ) = spatialFilter;
91+ m.attr (" StereoDepthConfig" ).attr (" PostProcessing" ).attr (" TemporalFilter" ) = temporalFilter;
92+ m.attr (" StereoDepthConfig" ).attr (" PostProcessing" ).attr (" SpeckleFilter" ) = speckleFilter;
93+
94+ Callstack* callstack = (Callstack*)pCallstack;
95+ auto cb = callstack->top ();
96+ callstack->pop ();
97+ cb (m, pCallstack);
98+ }
0 commit comments