40#include <boost/circular_buffer.hpp>
43#include <opencv2/opencv.hpp>
44#include <opencv2/core/core.hpp>
59#include <Image/ByteImage.h>
65#include <RobotAPI/interface/visualization/DebugDrawerInterface.h>
133 return "VisionX.ImageMonitor";
139 return QIcon{
"://icons/image_monitor.svg"};
145 return QIcon{
"://icons/eye.svg"};
148 void loadSettings(QSettings* settings)
override;
149 void saveSettings(QSettings* settings)
override;
152 void onInitImageProcessor()
override;
153 void onConnectImageProcessor()
override;
154 void onExitImageProcessor()
override;
155 void process()
override;
167 return imageProviderInfo;
170 const ImageContainer& getBufferedImage(
unsigned int position,
unsigned int& realPosition);
175 return imageBuffer.size();
182 this->playing = playing;
188 this->writeImageBuffer = buffering;
191 void createSnapshot();
194 using Component::getIceManager;
203 void startRecording();
204 void stopRecording();
213 void connectToProvider();
214 void disconnectFromProvider();
215 void updateStatistics();
219 void hideControls(
bool hide =
true);
223 QPointer<ImageMonitorWidget> widget;
230 unsigned int numberImages;
233 ImageProviderInterfacePrx imageProviderPrx;
240 bool writeImageBuffer;
243 IceUtil::Time lastBufferTime;
244 boost::circular_buffer<ImageContainer> imageBuffer;
245 std::queue<std::vector<CByteImage*>> recordingBuffer;
246 std::recursive_mutex recordingBufferMutex;
247 bool writeRecordingBuffer =
false;
253 std::recursive_mutex imageMutex;
256 QPointer<QToolBar> customToolbar;
257 QAction* viewingModeAction;
259 IceUtil::Time timeProvided, timeReceived;
261 std::vector<cv::Mat> outputBuffer;
262 std::vector<visionx::imrec::Recording> recorders;
264 std::map<float, std::vector<std::optional<armarx::DrawColor24Bit>>> depthToRgbLookUpTables;
#define ARMARXCOMPONENT_IMPORT_EXPORT
IceUtil::Handle< PeriodicTask< T > > pointer_type
Shared pointer type for convenience.
This filters allows to filter with an unstable frequency by considering only the valus in a specified...
The FPSCounter class provides methods for calculating the frames per second (FPS) count in periodic t...
ImageMonitorProperties brief one line description.
QStringList recordingMethods
CompressionType compressionType
std::filesystem::path outputDirectory
std::set< size_t > imagesToShow
The ImageProcessor class provides an interface for access to ImageProviders via Ice and shared memory...
The ImageTransferStats class provides information on the connection between ImageProvider and ImagePr...
std::shared_ptr< CByteImage > CByteImagePtr
std::vector< CByteImagePtr > ImageContainer