OpenEV
Extending OpenCV to event-based vision
Loading...
Searching...
No Matches
hdf5-reader.hpp
Go to the documentation of this file.
1
6#ifndef OPENEV_READERS_HDF5_READER_HPP
7#define OPENEV_READERS_HDF5_READER_HPP
8
10#include <H5Cpp.h>
11#include <cstddef>
12#include <string>
13#include <vector>
14
15namespace ev {
16[[maybe_unused]] constexpr bool USING_HDF5_READER_HPP = true;
17
33class HDF5Reader : public AbstractReader_ {
34public:
35 explicit HDF5Reader(const std::string &filename,
36 const std::string &t_path = "/events/t",
37 const std::string &x_path = "/events/x",
38 const std::string &y_path = "/events/y",
39 const std::string &p_path = "/events/p");
40 ~HDF5Reader() override;
41
43 HDF5Reader(const HDF5Reader &) = delete;
44 HDF5Reader(HDF5Reader &&) noexcept = delete;
45 HDF5Reader &operator=(const HDF5Reader &) = delete;
46 HDF5Reader &operator=(HDF5Reader &&) noexcept = delete;
48
49private:
50 H5::H5File file_;
51 H5::DataSet t_ds_, x_ds_, y_ds_, p_ds_;
52 hsize_t total_{0};
53 hsize_t file_pos_{0};
54
55 static constexpr hsize_t kChunk = 4096;
56 std::vector<double> t_buf_;
57 std::vector<int> x_buf_;
58 std::vector<int> y_buf_;
59 std::vector<int> p_buf_;
60 hsize_t buf_pos_{0};
61 hsize_t buf_size_{0};
62
63 std::size_t read_(Event *events, const std::size_t max) override;
64 void reset_() override;
65};
66
67} // namespace ev
68
69#endif // OPENEV_READERS_HDF5_READER_HPP
Abstract base class for event readers.
This is an auxiliary class. This class cannot be instanced.
Definition abstract-reader.hpp:28
ConcurrentQueue & events(const std::size_t n=0)
Read a given number of events, add them to the queue, and return it.
Definition abstract-reader.hpp:46
Eventi Event
Definition types.hpp:262