7 #ifndef YARP_FAKEFRAMEGRABBER_FAKEFRAMEGRABBER_H
8 #define YARP_FAKEFRAMEGRABBER_FAKEFRAMEGRABBER_H
27 #include <condition_variable>
38 #ifndef YARP_NO_DEPRECATED
60 bool close()
override;
90 int height()
const override;
92 int width()
const override;
104 bool getRgbFOV(
double& horizontalFov,
double& verticalFov)
override;
106 bool setRgbFOV(
double horizontalFov,
double verticalFov)
override;
136 bool setFeature(
int feature,
double value)
override;
138 bool getFeature(
int feature,
double *value)
override;
140 bool setFeature(
int feature,
double value1,
double value2)
override;
142 bool getFeature(
int feature,
double *value1,
double *value2)
override;
144 bool hasOnOff(
int feature,
bool *HasOnOff)
override;
146 bool setActive(
int feature,
bool onoff)
override;
148 bool getActive(
int feature,
bool *isActive)
override;
163 static constexpr
size_t default_w = 128;
164 static constexpr
size_t default_h = 128;
165 static constexpr
size_t default_freq = 30;
166 static constexpr
double default_snr = 0.5;
168 std::string m_rpcPortName=
"/fakeFrameGrabber/rpc";
176 unsigned long rnd{0};
177 double freq{default_freq};
178 double period{1/freq};
180 double horizontalFov{0.0};
181 double verticalFov{0.0};
185 bool add_timestamp{
false};
186 bool add_noise{
false};
187 double snr{default_snr};
188 bool use_bayer{
false};
189 bool use_mono{
false};
196 std::random_device rnddev;
197 std::default_random_engine randengine{rnddev()};
198 std::uniform_int_distribution<int> udist{-1, 1};
199 std::uniform_real_distribution<double> ucdist{0.0, 1.0};
201 std::mutex curr_buff_mutex;
204 bool img_ready[2] {
false,
false};
205 bool img_consumed[2] {
true,
true};
207 std::condition_variable img_ready_cv[2];
208 std::condition_variable img_consumed_cv[2];
221 void printTime(
unsigned char* pixbuf,
size_t pixbuf_w,
size_t pixbuf_h,
size_t x,
size_t y,
char* s,
size_t size);
224 #ifndef YARP_NO_DEPRECATED
230 class TestFrameGrabber :
fakeFrameGrabber: A fake camera for testing.
int width() const override
Return the width of each frame.
bool getCameraDescription(CameraDescriptor *camera) override
Get a basic description of the camera hw.
bool getImageCrop(cropType_id_t cropType, yarp::sig::VectorOf< std::pair< int, int >> vertices, yarp::sig::ImageOf< yarp::sig::PixelRgb > &image) override
bool hasFeature(int feature, bool *hasFeature) override
Check if camera has the requested feature (saturation, brightness ...
bool getMode(int feature, FeatureMode *mode) override
Get the current mode for the feature.
bool setFeature(int feature, double value) override
Set the requested feature to a value (saturation, brightness ...
int getRgbWidth() override
Return the width of each frame.
int getRgbHeight() override
Return the height of each frame.
yarp::os::Stamp getLastInputStamp() override
Return the time stamp relative to the last acquisition.
bool setOnePush(int feature) override
Set the requested feature to a value (saturation, brightness ...
bool getRgbResolution(int &width, int &height) override
Get the resolution of the rgb image from the camera.
bool getRgbIntrinsicParam(yarp::os::Property &intrinsic) override
Get the intrinsic parameters of the rgb camera.
bool getActive(int feature, bool *isActive) override
Get the current status of the feature, on or off.
bool getRgbSupportedConfigurations(yarp::sig::VectorOf< yarp::dev::CameraConfig > &configurations) override
Get the possible configurations of the camera.
bool hasOnePush(int feature, bool *hasOnePush) override
Check if the requested feature has the 'onePush' mode.
int height() const override
Return the height of each frame.
bool setMode(int feature, FeatureMode mode) override
Set the requested mode for the feature.
bool hasManual(int feature, bool *hasManual) override
Check if the requested feature has the 'manual' mode.
bool getRgbMirroring(bool &mirror) override
Get the mirroring setting of the sensor.
bool hasAuto(int feature, bool *hasAuto) override
Check if the requested feature has the 'auto' mode.
bool hasOnOff(int feature, bool *HasOnOff) override
Check if the camera has the ability to turn on/off the requested feature.
bool getFeature(int feature, double *value) override
Get the current value for the requested feature.
~FakeFrameGrabber() override=default
bool getRgbFOV(double &horizontalFov, double &verticalFov) override
Get the field of view (FOV) of the rgb camera.
FakeFrameGrabber & operator=(const FakeFrameGrabber &)=delete
bool setRgbMirroring(bool mirror) override
Set the mirroring setting of the sensor.
bool setActive(int feature, bool onoff) override
Set the requested feature on or off.
FakeFrameGrabber()=default
bool open(yarp::os::Searchable &config) override
Configure with a set of options.
FakeFrameGrabber & operator=(FakeFrameGrabber &&)=delete
bool setRgbResolution(int width, int height) override
Set the resolution of the rgb image from the camera.
FakeFrameGrabber(const FakeFrameGrabber &)=delete
bool setRgbFOV(double horizontalFov, double verticalFov) override
Set the field of view (FOV) of the rgb camera.
void run() override
Main body of the new thread.
void onStop() override
Call-back, called while halting the thread (before join).
bool getImage(yarp::sig::ImageOf< yarp::sig::PixelRgb > &image) override
FakeFrameGrabber(FakeFrameGrabber &&)=delete
bool hasRawVideo() override
bool read(yarp::os::ConnectionReader &connection) override
Read this object from a network connection.
bool close() override
Close the DeviceDriver.
Interface implemented by deprecated device drivers.
Interface implemented by all device drivers.
Control interface for frame grabber devices.
An interface for retrieving intrinsic parameter from a rgb camera.
An interface for reading from a network connection.
Interface implemented by all objects that can read themselves from the network, such as Bottle object...
A mini-server for network communication.
A class for storing options and configuration information.
A base class for nested structures that can be searched.
An abstraction for a time stamp and/or sequence number.
An abstraction for a thread of execution.