summaryrefslogtreecommitdiff
path: root/steer_accumulator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'steer_accumulator.cpp')
-rw-r--r--steer_accumulator.cpp33
1 files changed, 33 insertions, 0 deletions
diff --git a/steer_accumulator.cpp b/steer_accumulator.cpp
new file mode 100644
index 0000000..65ce38b
--- /dev/null
+++ b/steer_accumulator.cpp
@@ -0,0 +1,33 @@
+#include "steer_accumulator.h"
+
+using namespace std;
+
+void SteerAccumulator::add_steerer(SteerIface* steerer)
+{
+ steerers.push_back(steerer);
+}
+
+void SteerAccumulator::process_image(const Mat& img)
+{
+ for (list<SteerIface*>::iterator it = steerers.begin(); it!=steerers.end(); ++it)
+ (*it)->process_image(img);
+}
+
+double SteerAccumulator::get_steer_data()
+{
+ double sum=0;
+ for (list<SteerIface*>::iterator it = steerers.begin(); it!=steerers.end(); ++it)
+ sum+=(*it)->get_steer_data() * (*it)->get_confidence();
+
+ double confidence = get_confidence();
+
+ return (confidence==0) ? 0.0 : (sum/confidence);
+}
+
+double SteerAccumulator::get_confidence()
+{
+ double sum=0;
+ for (list<SteerIface*>::iterator it = steerers.begin(); it!=steerers.end(); ++it)
+ sum+=(*it)->get_confidence();
+ return sum;
+}