OpenEV
Extending OpenCV to event-based vision
 
Loading...
Searching...
No Matches
queue.hpp
Go to the documentation of this file.
1
6#ifndef OPENEV_CONTAINERS_QUEUE_HPP
7#define OPENEV_CONTAINERS_QUEUE_HPP
8
10#include <cstddef>
11#include <opencv2/core/types.hpp>
12#include <queue>
13
14namespace ev {
20template <typename T>
21class Queue_ : public std::queue<Event_<T>> {
22 using std::queue<Event_<T>>::queue;
23
24public:
29 [[nodiscard]] inline double duration() const {
30 return std::queue<ev::Event_<T>>::back().t - std::queue<ev::Event_<T>>::front().t;
31 }
32
37 [[nodiscard]] inline double rate() const {
38 return std::queue<ev::Event_<T>>::size() / duration();
39 }
40
45 [[nodiscard]] inline Eventd mean() {
46 const std::size_t n = std::queue<ev::Event_<T>>::size();
47 double x{0};
48 double y{0};
49 double t{0};
50 double p{0};
51
52 while(!std::queue<ev::Event_<T>>::empty()) {
53 const Event_<T> &e = std::queue<ev::Event_<T>>::front();
54 x += e.x;
55 y += e.y;
56 t += e.t;
57 p += e.p;
58 std::queue<ev::Event_<T>>::pop();
59 }
60
61 return {x / n, y / n, t / n, p / n > 0.5};
62 }
63
68 [[nodiscard]] inline cv::Point2d meanPoint() {
69 const std::size_t n = std::queue<ev::Event_<T>>::size();
70 double x{0};
71 double y{0};
72
73 while(!std::queue<ev::Event_<T>>::empty()) {
74 const Event_<T> &e = std::queue<ev::Event_<T>>::front();
75 x += e.x;
76 y += e.y;
77 std::queue<ev::Event_<T>>::pop();
78 }
79
80 return {x / n, y / n};
81 }
82
87 [[nodiscard]] inline double meanTime() {
88 const std::size_t n = std::queue<ev::Event_<T>>::size();
89 double t{0};
90
91 while(!std::queue<ev::Event_<T>>::empty()) {
92 t += std::queue<ev::Event_<T>>::front().t;
93 std::queue<ev::Event_<T>>::pop();
94 }
95
96 return t / n;
97 }
98
103 [[nodiscard]] inline double midTime() const {
104 return 0.5 * (std::queue<ev::Event_<T>>::front().t + std::queue<ev::Event_<T>>::back().t);
105 }
106};
111using Queue = Queuei;
112} // namespace ev
113
114#endif // OPENEV_CONTAINERS_QUEUE_HPP
This class extends cv::Point_<T> for event data. For more information, please refer here.
Definition types.hpp:56
bool p
Definition types.hpp:59
double t
Definition types.hpp:58
This class extends std::queue to implement event queues. For more information, please refer here.
Definition queue.hpp:21
double rate() const
Compute event rate as the ratio between the number of events and the time difference between the last...
Definition queue.hpp:37
cv::Point2d meanPoint()
Compute the mean x,y point of the events.
Definition queue.hpp:68
double meanTime()
Compute the mean time of the events.
Definition queue.hpp:87
Eventd mean()
Compute the mean of the events.
Definition queue.hpp:45
double midTime() const
Calculate the midpoint time between the oldest and the newest event.
Definition queue.hpp:103
double duration() const
Time difference between the last and the first event.
Definition queue.hpp:29
Queue_< float > Queuef
Definition queue.hpp:109
Queuei Queue
Definition queue.hpp:111
Queue_< double > Queued
Definition queue.hpp:110
Queue_< long > Queuel
Definition queue.hpp:108
Queue_< int > Queuei
Definition queue.hpp:107
Basic event-based vision structures based on OpenCV components.
Event_< double > Eventd
Definition types.hpp:230