OpenEV
Extending OpenCV to event-based vision
Loading...
Searching...
No Matches
abstract-reader.hpp
1
6#ifndef OPENEV_READERS_ABSTRACT_READER_HPP
7#define OPENEV_READERS_ABSTRACT_READER_HPP
8
9#include "openev/containers/array.hpp"
10#include "openev/containers/queue.hpp"
11#include "openev/containers/vector.hpp"
12#include "openev/core/types.hpp"
13#include <cstddef>
14
15namespace ev {
16
21public:
23 AbstractReader_() = default;
24 virtual ~AbstractReader_() = default;
25 AbstractReader_(const AbstractReader_ &) = delete;
26 AbstractReader_(AbstractReader_ &&) noexcept = delete;
27 AbstractReader_ &operator=(const AbstractReader_ &) = delete;
28 AbstractReader_ &operator=(AbstractReader_ &&) noexcept = delete;
37 inline bool next(Event &e) {
38 return read_(e);
39 }
40
46 template <std::size_t N>
47 bool next(Array<N> &array) {
48 for(Event &a : array) {
49 if(!read_(a)) {
50 return false;
51 }
52 }
53 return true;
54 }
55
62 bool next_n(Vector &vector, const int n);
63
71 bool next_n(Queue &queue, const int n, const bool keep_size = false);
72
79 bool next_t(Vector &vector, const double t);
80
88 bool next_t(Queue &queue, const double t, const bool keep_size = false);
89
95 bool skip_n(int n);
96
102 bool skip_t(const double t);
103
108 inline void reset() {
109 return reset_();
110 }
111
115 std::size_t count() {
116 std::size_t cnt = 0;
117 reset_();
118 while(skip_n(1)) {
119 cnt++;
120 }
121 reset_();
122 return cnt;
123 }
124
125protected:
126 virtual bool read_(Event &e) = 0;
127 virtual void reset_() = 0;
128};
129
130} // namespace ev
131
132#endif // OPENEV_READERS_ABSTRACT_READER_HPP
This is an auxiliary class. This class cannot be instanced.
Definition abstract-reader.hpp:20
bool skip_t(const double t)
Skip events for the specified duration.
Definition abstract-reader.cpp:71
void reset()
Start reading from the first event in the dataset.
Definition abstract-reader.hpp:108
bool next(Array< N > &array)
Get next events from the dataset.
Definition abstract-reader.hpp:47
bool next_n(Vector &vector, const int n)
Get next n events from the dataset.
Definition abstract-reader.cpp:8
bool skip_n(int n)
Skip the next n events in the dataset.
Definition abstract-reader.cpp:65
bool next_t(Vector &vector, const double t)
Get the next events until the specified duration is reached.
Definition abstract-reader.cpp:32
std::size_t count()
Definition abstract-reader.hpp:115
bool next(Event &e)
Get next event from the dataset.
Definition abstract-reader.hpp:37
This class extends std::array to implement event arrays. For more information, please refer here.
Definition array.hpp:21
This class extends cv::Point_<T> for event data. For more information, please refer here.
Definition types.hpp:60
This class extends std::queue to implement event queues. For more information, please refer here.
Definition queue.hpp:35
This class extends std::vector to implement event vectors. For more information, please refer here.
Definition vector.hpp:36
Basic event-based vision structures based on OpenCV components.