ImageToArMem.h
Go to the documentation of this file.
1#pragma once
2
3#include <map>
4#include <memory>
5#include <vector>
6
11
12#include <VisionX/interface/components/Calibration.h>
15
17{
18
19 /**
20 * @brief Allows to convert multiple CByteImages to Aron images and
21 * memory commits.
22 */
24 {
25 public:
27
28 void setWritingMemory(armarx::armem::server::WritingMemoryInterfacePrx memory);
29 void setWriter(const armarx::armem::client::Writer& writer);
30
31 void addImagesRGB(const armarx::armem::MemoryID& entityID,
32 const std::vector<size_t>& imageIndices) override;
33 void addImagesDepth(const armarx::armem::MemoryID& entityID,
34 const std::vector<size_t>& imageIndices) override;
35
36 armarx::armem::MemoryID getMemoryID() const override;
37 std::string summarizeStructure() const override;
38
39 void initImages(int width, int height, CByteImage::ImageType type);
40 void initImages(const visionx::ImageFormatInfo& info);
41 std::vector<CByteImage> makeCByteImageBuffer();
42
43
44 /// Build inputs for adding the required provider segments.
45 armarx::armem::data::AddSegmentsInput makeAddSegmentsInput(bool clearWhenExists = true);
46 /// Add the required provider segments.
47 armarx::armem::data::AddSegmentsResult addProviderSegments(bool clearWhenExists = true,
48 int verbose = 1);
49
50
51 /// Store image data from the given buffer.
52 void useImageBuffers(CByteImage** inputImageBuffer, armarx::armem::Time timeProvided);
53 void usePixelBuffers(void** inputImageBuffer, armarx::armem::Time timeProvided);
54
55 /// Build the commit.
57 /// Commit the stored image data.
58 void commitImages();
59
60 /// Calibration
61 void commitCameraCalibration(const visionx::StereoCalibration&);
62 void commitCameraCalibration(const visionx::MonocularCalibration&);
63
64
65 private:
66 template <class AronImageT>
67 void addImages(const armarx::armem::MemoryID& entityID,
68 const std::vector<size_t>& imageIndices);
69
70 void updateAronImages(const armarx::armem::wm::Memory& memory);
71
72
73 public:
75
76 /// Entity ID to memory images (instances).
77 std::map<armarx::armem::MemoryID, std::vector<std::unique_ptr<ImageBase>>> imagesByEntity;
79 };
80
81} // namespace visionx::armem_images
Helps a memory client sending data to a memory.
Definition Writer.h:23
Client-side working memory.
void useImageBuffers(CByteImage **inputImageBuffer, armarx::armem::Time timeProvided)
Store image data from the given buffer.
void initImages(int width, int height, CByteImage::ImageType type)
std::string summarizeStructure() const override
std::vector< CByteImage > makeCByteImageBuffer()
armarx::armem::Commit makeCommit() const
Build the commit.
void initImages(const visionx::ImageFormatInfo &info)
armarx::armem::MemoryID getMemoryID() const override
void usePixelBuffers(void **inputImageBuffer, armarx::armem::Time timeProvided)
armarx::armem::client::Writer memoryWriter
void addImagesDepth(const armarx::armem::MemoryID &entityID, const std::vector< size_t > &imageIndices) override
void commitImages()
Commit the stored image data.
void setWritingMemory(armarx::armem::server::WritingMemoryInterfacePrx memory)
armarx::armem::data::AddSegmentsInput makeAddSegmentsInput(bool clearWhenExists=true)
Build inputs for adding the required provider segments.
void addImagesRGB(const armarx::armem::MemoryID &entityID, const std::vector< size_t > &imageIndices) override
void setWriter(const armarx::armem::client::Writer &writer)
armarx::armem::data::AddSegmentsResult addProviderSegments(bool clearWhenExists=true, int verbose=1)
Add the required provider segments.
std::map< armarx::armem::MemoryID, std::vector< std::unique_ptr< ImageBase > > > imagesByEntity
Entity ID to memory images (instances).
void commitCameraCalibration(const visionx::StereoCalibration &)
Calibration.
armarx::core::time::DateTime Time
A bundle of updates to be sent to the memory.
Definition Commit.h:90