OpenEV
Extending OpenCV to event-based vision
Toggle main menu visibility
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
9
#include "
openev/core/types.hpp
"
10
#include <cstddef>
11
#include <opencv2/core/types.hpp>
12
#include <queue>
13
14
namespace
ev {
15
constexpr
bool
USING_QUEUE_HPP =
true
;
16
22
template
<
typename
T>
23
class
Queue_
:
public
std::queue<Event_<T>> {
24
using
std::queue<
Event_<T>
>::queue;
25
using
ResultType = TimeType;
26
27
public
:
32
[[nodiscard]]
inline
ResultType
duration
()
const
{
33
return
std::queue<ev::Event_<T>>::back().t - std::queue<ev::Event_<T>>::front().t;
34
}
35
40
[[nodiscard]]
inline
ResultType
rate
()
const
{
41
return
std::queue<ev::Event_<T>>::size() /
duration
();
42
}
43
49
[[nodiscard]]
inline
Event_<ResultType>
mean
() {
50
const
std::size_t n = std::queue<ev::Event_<T>>::size();
51
ResultType x{0};
52
ResultType y{0};
53
ResultType t{0};
54
ResultType p{0};
55
56
while
(!std::queue<
ev::Event_<T>
>::empty()) {
57
const
Event_<T>
&e = std::queue<ev::Event_<T>>::front();
58
x += e.x;
59
y += e.y;
60
t += e.
t
;
61
p += e.
p
;
62
std::queue<ev::Event_<T>>::pop();
63
}
64
65
return
{x / n, y / n, t / n, p / n > 0.5};
66
}
67
73
[[nodiscard]]
inline
cv::Point_<ResultType>
meanPoint
() {
74
const
std::size_t n = std::queue<ev::Event_<T>>::size();
75
ResultType x{0};
76
ResultType y{0};
77
78
while
(!std::queue<
ev::Event_<T>
>::empty()) {
79
const
Event_<T>
&e = std::queue<ev::Event_<T>>::front();
80
x += e.x;
81
y += e.y;
82
std::queue<ev::Event_<T>>::pop();
83
}
84
85
return
{x / n, y / n};
86
}
87
93
[[nodiscard]]
inline
ResultType
meanTime
() {
94
const
std::size_t n = std::queue<ev::Event_<T>>::size();
95
ResultType t{0};
96
97
while
(!std::queue<
ev::Event_<T>
>::empty()) {
98
t += std::queue<ev::Event_<T>>::front().t;
99
std::queue<ev::Event_<T>>::pop();
100
}
101
102
return
t / n;
103
}
104
109
[[nodiscard]]
inline
ResultType
midTime
()
const
{
110
return
0.5 * (std::queue<ev::Event_<T>>::front().t + std::queue<ev::Event_<T>>::back().t);
111
}
112
};
113
using
Queuei
=
Queue_<int>
;
114
using
Queuel
=
Queue_<long>
;
115
using
Queuef
=
Queue_<float>
;
116
using
Queued
=
Queue_<double>
;
117
using
Queue
=
Queuei
;
118
}
// namespace ev
119
120
#endif
// OPENEV_CONTAINERS_QUEUE_HPP
ev::Event_
This class extends cv::Point_<T> for event data. For more information, please refer here.
Definition
types.hpp:77
ev::Event_::p
PolarityType p
Definition
types.hpp:80
ev::Event_::t
TimeType t
Definition
types.hpp:79
ev::Queue_
This class extends std::queue to implement event queues. For more information, please refer here.
Definition
queue.hpp:23
ev::Queue_::duration
ResultType duration() const
Time difference between the last and the first event.
Definition
queue.hpp:32
ev::Queue_::mean
Event_< ResultType > mean()
Compute the mean of the events.
Definition
queue.hpp:49
ev::Queue_::midTime
ResultType midTime() const
Calculate the midpoint time between the oldest and the newest event.
Definition
queue.hpp:109
ev::Queue_::meanTime
ResultType meanTime()
Compute the mean time of the events.
Definition
queue.hpp:93
ev::Queue_::rate
ResultType rate() const
Compute event rate as the ratio between the number of events and the time difference between the last...
Definition
queue.hpp:40
ev::Queue_::meanPoint
cv::Point_< ResultType > meanPoint()
Compute the mean x,y point of the events.
Definition
queue.hpp:73
ev::Queuef
Queue_< float > Queuef
Definition
queue.hpp:115
ev::Queue
Queuei Queue
Definition
queue.hpp:117
ev::Queued
Queue_< double > Queued
Definition
queue.hpp:116
ev::Queuel
Queue_< long > Queuel
Definition
queue.hpp:114
ev::Queuei
Queue_< int > Queuei
Definition
queue.hpp:113
types.hpp
Basic event-based vision structures based on OpenCV components.
modules
containers
include
openev
containers
queue.hpp
Generated by
1.17.0