25#include <Image/ImageProcessor.h>
31 this->_imageProviderInfo = imageProviderInfo;
42 std::unique_lock lock(_bufferMutex);
44 triple->rgbImage =
new CByteImage(_imageProviderInfo.imageFormat.dimension.width,
45 _imageProviderInfo.imageFormat.dimension.height,
47 ::ImageProcessor::CopyImage(rgbImage, triple->rgbImage);
55 std::unique_lock lock(_bufferMutex);
57 triple->depthImage =
new CByteImage(_imageProviderInfo.imageFormat.dimension.width,
58 _imageProviderInfo.imageFormat.dimension.height,
60 ::ImageProcessor::CopyImage(depthImage, triple->depthImage);
68 std::unique_lock lock(_bufferMutex);
78 std::unique_lock lock(_bufferMutex);
80 if (triple->keypoints && triple->depthImage && triple->rgbImage)
82 std::map<long, ImageKeypointBuffer::ImageKeypointTriplePtr>::iterator it =
85 if (deleteOlderTriples)
87 deleteOlderEntries(it);
97std::pair<long, ImageKeypointBuffer::ImageKeypointTriplePtr>
100 std::unique_lock lock(_bufferMutex);
101 if (_buffer.size() > 0)
103 auto pair = *_buffer.begin();
104 _buffer.erase(_buffer.begin());
105 return std::move(pair);
113std::pair<long, ImageKeypointBuffer::ImageKeypointTriplePtr>
116 std::unique_lock lock(_bufferMutex);
118 std::map<long, ImageKeypointBuffer::ImageKeypointTriplePtr>::iterator it = _buffer.begin();
119 while (!isComplete((*it).first))
125 if (deleteOlderTriples)
127 deleteOlderEntries(it);
129 return std::move(pair);
140ImageKeypointBuffer::ensureTriple(
long timestamp)
144 _buffer.insert(std::make_pair(
timestamp, std::make_shared<ImageKeypointTriple>()));
150ImageKeypointBuffer::isComplete(
long timestamp)
153 return (triple->keypoints && triple->depthImage && triple->rgbImage) ? true :
false;
157ImageKeypointBuffer::deleteOlderEntries(
158 std::map<long, ImageKeypointBuffer::ImageKeypointTriplePtr>::iterator it)
160 if (it == _buffer.end())
166 _buffer.erase(_buffer.begin(), it);
ImageKeypointBuffer(const visionx::ImageProviderInfo &imageProviderInfo)
ImageKeypointBuffer Constructor.
bool addRGBImage(CByteImage *rgbImage, long timestamp)
bool addKeypoints(KeypointManagerPtr keypoints, long timestamp)
~ImageKeypointBuffer()
ImageKeypointBuffer Destructor.
std::pair< long, ImageKeypointBuffer::ImageKeypointTriplePtr > getOldestCompleteTriple(bool deleteOlderTriples=true)
bool addDepthImage(CByteImage *depthImage, long timestamp)
ImageKeypointTriplePtr getTripleAtTimestamp(long timestamp, bool deleteOlderTriples=true)
std::pair< long, ImageKeypointBuffer::ImageKeypointTriplePtr > getOldestTriple()
std::shared_ptr< ImageKeypointTriple > ImageKeypointTriplePtr
This file offers overloads of toIce() and fromIce() functions for STL container types.
std::shared_ptr< KeypointManager > KeypointManagerPtr