6#ifndef OPENEV_CONTAINERS_DEQUE_HPP
7#define OPENEV_CONTAINERS_DEQUE_HPP
9#include "openev/containers/array.hpp"
10#include "openev/containers/vector.hpp"
15#include <opencv2/core/types.hpp>
20#ifndef OPENEV_ARRAY_HPP
21template <
typename T, std::
size_t N>
25#ifndef OPENEV_VECTOR_HPP
37class Deque_ :
public std::deque<Event_<T>> {
51 template <std::
size_t N>
53 std::deque<Event_<T>>::insert(std::deque<
Event_<T>>::end(), array.begin(), array.end());
61 std::deque<Event_<T>>::insert(std::deque<
Event_<T>>::end(), vector.begin(), vector.end());
69 return std::deque<Event_<T>>::back().t - std::deque<Event_<T>>::front().t;
76 [[nodiscard]]
inline double rate()
const {
77 return std::deque<Event_<T>>::size() /
duration();
85 const double x = std::accumulate(std::deque<
Event_<T>>::begin(), std::deque<
Event_<T>>::end(), 0.0, [](
double sum,
const Event_<T> &e) {
return sum + e.x; }) / std::deque<
Event_<T>>::size();
86 const double y = std::accumulate(std::deque<
Event_<T>>::begin(), std::deque<
Event_<T>>::end(), 0.0, [](
double sum,
const Event_<T> &e) {
return sum + e.y; }) / std::deque<
Event_<T>>::size();
87 const double t = std::accumulate(std::deque<
Event_<T>>::begin(), std::deque<
Event_<T>>::end(), 0.0, [](
double sum,
const Event_<T> &e) {
return sum + e.
t; }) / std::deque<
Event_<T>>::size();
88 const double p = std::accumulate(std::deque<
Event_<T>>::begin(), std::deque<
Event_<T>>::end(), 0.0, [](
double sum,
const Event_<T> &e) {
return sum + e.
p; }) / std::deque<
Event_<T>>::size();
89 return {x, y, t, p > 0.5};
97 const double x = std::accumulate(std::deque<
Event_<T>>::begin(), std::deque<
Event_<T>>::end(), 0.0, [](
double sum,
const Event_<T> &e) {
return sum + e.x; }) / std::deque<
Event_<T>>::size();
98 const double y = std::accumulate(std::deque<
Event_<T>>::begin(), std::deque<
Event_<T>>::end(), 0.0, [](
double sum,
const Event_<T> &e) {
return sum + e.y; }) / std::deque<
Event_<T>>::size();
115 return 0.5 * (std::deque<Event_<T>>::front().t + std::deque<Event_<T>>::back().t);
This class extends std::array to implement event arrays. For more information, please refer here.
Definition array.hpp:22
This class extends std::deque to implement event deques. For more information, please refer here.
Definition deque.hpp:37
void push_back(const Vector_< T > &vector)
Push elements from a vector of events.
Definition deque.hpp:60
cv::Point2d meanPoint()
Compute the mean x,y point of the events.
Definition deque.hpp:96
void push_back(const Array_< T, N > &array)
Push elements from an array of events.
Definition deque.hpp:52
double rate() const
Compute event rate as the ratio between the number of events and the time difference between the last...
Definition deque.hpp:76
Eventd mean()
Compute the mean of the events.
Definition deque.hpp:84
double duration() const
Time difference between the last and the first event.
Definition deque.hpp:68
double meanTime()
Compute the mean time of the events.
Definition deque.hpp:106
double midTime() const
Calculate the midpoint time between the oldest and the newest event.
Definition deque.hpp:114
This class extends cv::Point_<T> for event data. For more information, please refer here.
Definition types.hpp:62
bool p
Definition types.hpp:65
double t
Definition types.hpp:64
This class extends std::vector to implement event vectors. For more information, please refer here.
Definition vector.hpp:36
Deque_< double > Dequed
Definition deque.hpp:121
Deque_< int > Dequei
Definition deque.hpp:118
Deque_< float > Dequef
Definition deque.hpp:120
Dequei Deque
Definition deque.hpp:122
Deque_< long > Dequel
Definition deque.hpp:119
Basic event-based vision structures based on OpenCV components.
Event_< double > Eventd
Definition types.hpp:243