6#ifndef OPENEV_CONTAINERS_QUEUE_HPP
7#define OPENEV_CONTAINERS_QUEUE_HPP
9#include "openev/containers/array.hpp"
10#include "openev/containers/vector.hpp"
13#include <opencv2/core/types.hpp>
19#ifndef OPENEV_ARRAY_HPP
20template <
typename T, std::
size_t N>
24#ifndef OPENEV_VECTOR_HPP
36class Queue_ :
public std::queue<Event_<T>> {
42 std::queue<Event_<T>>
::push(e);
50 template <std::
size_t N>
53 std::queue<Event_<T>>::emplace(std::move(e));
63 std::queue<Event_<T>>::emplace(std::move(e));
72 return std::queue<Event_<T>>::back().t - std::queue<Event_<T>>::front().t;
79 [[nodiscard]]
inline double rate()
const {
80 return std::queue<Event_<T>>::size() /
duration();
88 const std::size_t n = std::queue<Event_<T>>::size();
95 const Event_<T> &e = std::queue<Event_<T>>::front();
100 std::queue<Event_<T>>::pop();
103 return {x / n, y / n, t / n, p / n > 0.5};
111 const std::size_t n = std::queue<Event_<T>>::size();
116 const Event_<T> &e = std::queue<Event_<T>>::front();
119 std::queue<Event_<T>>::pop();
122 return {x / n, y / n};
130 const std::size_t n = std::queue<Event_<T>>::size();
134 t += std::queue<Event_<T>>::front().t;
135 std::queue<Event_<T>>::pop();
146 return 0.5 * (std::queue<Event_<T>>::front().t + std::queue<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 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::queue to implement event queues. For more information, please refer here.
Definition queue.hpp:36
double rate() const
Compute event rate as the ratio between the number of events and the time difference between the last...
Definition queue.hpp:79
void push(const Array_< T, N > &array)
Push elements from an array of events.
Definition queue.hpp:51
cv::Point2d meanPoint()
Compute the mean x,y point of the events.
Definition queue.hpp:110
double meanTime()
Compute the mean time of the events.
Definition queue.hpp:129
void push(const Vector_< T > &vector)
Push elements from a vector of events.
Definition queue.hpp:61
Eventd mean()
Compute the mean of the events.
Definition queue.hpp:87
double midTime() const
Calculate the midpoint time between the oldest and the newest event.
Definition queue.hpp:145
double duration() const
Time difference between the last and the first event.
Definition queue.hpp:71
This class extends std::vector to implement event vectors. For more information, please refer here.
Definition vector.hpp:36
Queue_< float > Queuef
Definition queue.hpp:151
Queuei Queue
Definition queue.hpp:153
Queue_< double > Queued
Definition queue.hpp:152
Queue_< long > Queuel
Definition queue.hpp:150
Queue_< int > Queuei
Definition queue.hpp:149
Basic event-based vision structures based on OpenCV components.
Event_< double > Eventd
Definition types.hpp:243