31#include <IceUtil/Time.h>
33#include <opencv2/calib3d.hpp>
34#include <opencv2/core/eigen.hpp>
35#include <opencv2/highgui.hpp>
37#include <SimoxUtility/algorithm/string.h>
43#include <ArmarXCore/interface/core/SharedMemory.h>
51#include <Calibration/Calibration.h>
52#include <Calibration/StereoCalibration.h>
53#include <Image/IplImageAdaptor.h>
70 p.imageProviderName,
"img.ImageProviderName",
"Name of the image provider to use.");
72 p.referenceFrame,
"img.ReferenceFrameName",
"Name of the ReferenceFrameName");
73 defs->optional(p.agentName,
"img.AgentName",
"Name of the agent");
74 defs->optional(p.cameraIndex,
"img.cameraIndex",
"Camera index. Left = 0, Right = 1, ...");
76 std::string pattern =
"[ k3 [, k4, k5, k6 [, s1, s2, s3, s4 ] ] ]";
78 defs->defineOptionalProperty<std::vector<std::string>>(
79 "cam.ExtraDistortionCoeffs",
81 "Optional extra distortion coefficients (which cannot be retrieved from the image "
83 "\nThe expected parameters are: " +
86 "\nThat is, you must specifiy 1 (k3), 4 (k3-k6), or 8 (k3-k6, s1-s4) elements."
87 "\nNote: k1, k2, p1, p2 are retrieved from the image provider.")
105 return "ImagePassThrough";
119 std::string propName =
"cam.ExtraDistortionCoeffs";
120 std::vector<std::string> coeffsStr;
156 ARMARX_INFO <<
"Connecting to image provider '" << p.imageProviderName <<
"'...";
160 StereoCalibrationInterfacePrx calibrationProvider =
161 StereoCalibrationInterfacePrx::checkedCast(imageProviderInfo.
proxy);
163 std::unique_ptr<CStereoCalibration> stereoCalibration(
217 cameraImages =
new CByteImage*[2];
236 ARMARX_VERBOSE <<
"Waiting for images from provider '" << p.imageProviderName <<
"'...";
239 armarx::MetaInfoSizeBasePtr info;
241 m_timestamp_last_image =
246 ARMARX_VERBOSE <<
"Got images from provider '" << p.imageProviderName
247 <<
"'. Providing to working memory...";
251 IceUtil::Time::microSeconds(info->timeProvided));
303 visionx::StereoCalibration
315 StereoCalibrationInterfacePrx
320 auto calibProvider = StereoCalibrationInterfacePrx::checkedCast(imageProviderInfo.
proxy);
323 ARMARX_CHECK(calibProvider) <<
"Image provider '" << p.imageProviderName
324 <<
"' does not provide stereo calibration.";
325 return calibProvider;
#define ARMARX_REGISTER_COMPONENT_EXECUTABLE(ComponentT, applicationName)
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)
ImagePassThrough uses CTexturedRecognition of IVTRecognition in order to recognize and localize objec...
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
static std::string GetDefaultName()
void createRemoteGuiTab()
std::string getDefaultName() const override
Retrieve default name of component.
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.