29#include <IceUtil/Time.h>
31#include <opencv2/calib3d.hpp>
32#include <opencv2/core/eigen.hpp>
33#include <opencv2/highgui.hpp>
35#include <SimoxUtility/algorithm/string.h>
41#include <ArmarXCore/interface/core/SharedMemory.h>
49#include <Calibration/Calibration.h>
50#include <Calibration/StereoCalibration.h>
51#include <Image/IplImageAdaptor.h>
68 p.imageProviderName,
"img.ImageProviderName",
"Name of the image provider to use.");
70 p.referenceFrame,
"img.ReferenceFrameName",
"Name of the ReferenceFrameName");
71 defs->optional(p.agentName,
"img.AgentName",
"Name of the agent");
72 defs->optional(p.cameraIndex,
"img.cameraIndex",
"Camera index. Left = 0, Right = 1, ...");
74 std::string pattern =
"[ k3 [, k4, k5, k6 [, s1, s2, s3, s4 ] ] ]";
76 defs->defineOptionalProperty<std::vector<std::string>>(
77 "cam.ExtraDistortionCoeffs",
79 "Optional extra distortion coefficients (which cannot be retrieved from the image "
81 "\nThe expected parameters are: " +
84 "\nThat is, you must specifiy 1 (k3), 4 (k3-k6), or 8 (k3-k6, s1-s4) elements."
85 "\nNote: k1, k2, p1, p2 are retrieved from the image provider.")
103 return "ImagePassThrough";
111 std::string propName =
"cam.ExtraDistortionCoeffs";
112 std::vector<std::string> coeffsStr;
148 ARMARX_INFO <<
"Connecting to image provider '" << p.imageProviderName <<
"'...";
152 StereoCalibrationInterfacePrx calibrationProvider =
153 StereoCalibrationInterfacePrx::checkedCast(imageProviderInfo.
proxy);
155 std::unique_ptr<CStereoCalibration> stereoCalibration(
209 cameraImages =
new CByteImage*[2];
228 ARMARX_VERBOSE <<
"Waiting for images from provider '" << p.imageProviderName <<
"'...";
231 armarx::MetaInfoSizeBasePtr info;
233 m_timestamp_last_image =
238 ARMARX_VERBOSE <<
"Got images from provider '" << p.imageProviderName
239 <<
"'. Providing to working memory...";
243 IceUtil::Time::microSeconds(info->timeProvided));
295 visionx::StereoCalibration
307 StereoCalibrationInterfacePrx
312 auto calibProvider = StereoCalibrationInterfacePrx::checkedCast(imageProviderInfo.
proxy);
315 ARMARX_CHECK(calibProvider) <<
"Image provider '" << p.imageProviderName
316 <<
"' does not provide stereo calibration.";
317 return calibProvider;
std::string getConfigIdentifier()
Retrieve config identifier for this component as set in constructor.
static Duration MicroSeconds(std::int64_t microSeconds)
Constructs a duration in microseconds.
bool usingProxy(const std::string &name, const std::string &endpoints="")
Registers a proxy for retrieval after initialization and adds it to the dependency list.
std::string prefix
Prefix of the properties such as namespace, domain, component name, etc.
Represents a point in time.
ImagePassThroughPropertyDefinitions(std::string prefix)
void startCapture(::Ice::Float framesPerSecond, const ::Ice::Current ¤t=::Ice::emptyCurrent) override
void onConnectImageProcessor() override
Implement this method in the ImageProcessor in order execute parts when the component is fully initia...
std::string getReferenceFrame(const ::Ice::Current &=::Ice::emptyCurrent) override
void stopCapture(const ::Ice::Current ¤t=::Ice::emptyCurrent) override
void RemoteGui_update() override
StereoCalibrationInterfacePrx getStereoCalibrationProvider()
visionx::StereoCalibration getStereoCalibration(const ::Ice::Current &=::Ice::emptyCurrent) override
armarx::PropertyDefinitionsPtr createPropertyDefinitions() override
void process() override
Process the vision component.
void onInitImageProcessor() override
Setup the vision component.
bool getImagesAreUndistorted(const ::Ice::Current &=::Ice::emptyCurrent) override
void createRemoteGuiTab()
std::string getDefaultName() const override
ImageProcessorPropertyDefinitions(std::string prefix)
bool waitForImages(int milliseconds=1000)
Wait for new images.
ImageProviderInfo getImageProvider(std::string name, ImageType destinationImageType=eRgb, bool waitForProxy=false)
Select an ImageProvider.
int getImages(CByteImage **ppImages)
Poll images from provider.
int numberImages
Number of images.
ImageFormatInfo imageFormat
Image format struct that contains all necessary image information.
ImageProviderInterfacePrx proxy
proxy to image provider
void setImageFormat(ImageDimension imageDimension, ImageType imageType, BayerPatternType bayerPatternType=visionx::eBayerPatternRg)
Sets the image basic format data.
void provideImages(void **inputBuffers, const IceUtil::Time &imageTimestamp=IceUtil::Time())
send images raw.
void setNumberImages(int numberImages)
Sets the number of images on each capture.
#define ARMARX_CHECK(expression)
Shortcut for ARMARX_CHECK_EXPRESSION.
#define ARMARX_INFO
The normal logging level.
#define ARMARX_VERBOSE
The logging level for verbose information.
IceUtil::Handle< class PropertyDefinitionContainer > PropertyDefinitionsPtr
PropertyDefinitions smart pointer type.