33 #include <Image/ImageProcessor.h>
42 auto providersRaw = getProperty<std::string>(
"ImageProviders").getValue();
43 auto providerSplit =
armarx::Split(providersRaw,
";",
true,
true);
45 for (std::string providerStr : providerSplit)
50 std::set<size_t> imageSelection;
51 if (
split.size() >= 2)
53 auto imageSelectionVec = armarx::Split<size_t>(
split.at(1),
",",
true,
true);
55 std::set<size_t>(imageSelectionVec.begin(), imageSelectionVec.end());
63 imageProviderData[name].imageSelection = imageSelection;
70 std::unique_lock lock(mutex);
72 ::visionx::ImageDimension maxDim;
73 for (
auto& pair : imageProviderData)
75 auto name = pair.first;
76 auto&
data = pair.second;
77 auto& selection =
data.imageSelection;
79 const auto& imageProviderInfo =
data.providerInfo;
80 if (selection.empty())
82 for (
int i = 0; i < imageProviderInfo.numberImages; i++)
87 data.numImages = imageProviderInfo.numberImages;
88 if (imageProviderInfo.imageFormat != imageProviderInfo.imageFormat)
92 maxDim.width =
std::max(imageProviderInfo.imageFormat.dimension.width, maxDim.width);
93 maxDim.height =
std::max(imageProviderInfo.imageFormat.dimension.height, maxDim.height);
95 data.srcCameraImages.clear();
97 for (
auto&
index : selection)
101 new CByteImage(imageProviderInfo.imageFormat.dimension.width,
102 imageProviderInfo.imageFormat.dimension.height,
103 CByteImage::eRGB24)));
106 ARMARX_INFO <<
"max image dimension: " << maxDim.width <<
"x" << maxDim.height;
107 totalNumberOfImages = 0;
108 for (
auto& pair : imageProviderData)
110 auto name = pair.first;
111 auto&
data = pair.second;
112 auto& selection =
data.imageSelection;
113 data.targetCameraImages.clear();
114 data.resize = maxDim.width !=
data.providerInfo.imageFormat.dimension.width ||
115 maxDim.height !=
data.providerInfo.imageFormat.dimension.height;
117 <<
": image dimension: " <<
data.providerInfo.imageFormat.dimension.width
118 <<
"x" <<
data.providerInfo.imageFormat.dimension.height
119 <<
" resizing: " <<
data.resize;
121 for (
auto&
index : selection)
125 new CByteImage(maxDim.width, maxDim.height, CByteImage::eRGB24)));
126 totalNumberOfImages++;
156 std::unique_lock lock(mutex);
157 std::vector<CByteImage*> images;
158 for (
auto& pair : imageProviderData)
160 const auto name = pair.first;
161 auto&
data = pair.second;
171 armarx::MetaInfoSizeBasePtr info;
172 std::vector<CByteImage*> tmpImageVec;
173 for (
auto& image :
data.srcCameraImages)
175 tmpImageVec.push_back(image.get());
177 auto numImg =
getImages(name, tmpImageVec.data(), info);
179 if (numImg !=
data.numImages)
182 <<
"Unable to transfer or read images: returned number of images "
183 << numImg <<
" expected: " <<
data.numImages;
187 for (
auto& image :
data.srcCameraImages)
191 images.push_back(image.get());
195 auto targetImg =
data.targetCameraImages.at(i).get();
196 ::ImageProcessor::Resize(image.get(), targetImg);
197 images.push_back(targetImg);