ArmNN
 20.02
InferenceTestImage.hpp File Reference
#include <armnn/Exceptions.hpp>
#include <VerificationHelpers.hpp>
#include <array>
#include <cstdint>
#include <vector>
#include <utility>

Go to the source code of this file.

Classes

class  InferenceTestImageException
 
class  InferenceTestImageLoadFailed
 
class  InferenceTestImageOutOfBoundsAccess
 
class  InferenceTestImageResizeFailed
 
class  InferenceTestImageWriteFailed
 
class  UnknownImageChannelLayout
 
class  InferenceTestImage
 

Enumerations

enum  ImageChannel { R, G, B }
 
enum  ImageChannelLayout { Rgb, Bgr }
 

Functions

std::vector< float > GetImageDataInArmNnLayoutAsNormalizedFloats (ImageChannelLayout layout, const InferenceTestImage &image)
 
std::vector< float > GetImageDataInArmNnLayoutAsFloatsSubtractingMean (ImageChannelLayout layout, const InferenceTestImage &image, const std::array< float, 3 > &mean)
 
std::vector< float > GetImageDataAsNormalizedFloats (ImageChannelLayout layout, const InferenceTestImage &image)
 

Enumeration Type Documentation

◆ ImageChannel

enum ImageChannel
strong
Enumerator

Definition at line 113 of file InferenceTestImage.hpp.

114 {
115  R,
116  G,
117  B
118 };

◆ ImageChannelLayout

enum ImageChannelLayout
strong
Enumerator
Rgb 
Bgr 

Definition at line 121 of file InferenceTestImage.hpp.

Function Documentation

◆ GetImageDataAsNormalizedFloats()

std::vector<float> GetImageDataAsNormalizedFloats ( ImageChannelLayout  layout,
const InferenceTestImage image 
)

Definition at line 334 of file InferenceTestImage.cpp.

References B, G, InferenceTestImage::GetHeight(), InferenceTestImage::GetPixelAs3Channels(), InferenceTestImage::GetWidth(), and R.

336 {
337  std::vector<float> imageData;
338  const unsigned int h = image.GetHeight();
339  const unsigned int w = image.GetWidth();
340 
341  const unsigned int rDstIndex = GetImageChannelIndex(layout, ImageChannel::R);
342  const unsigned int gDstIndex = GetImageChannelIndex(layout, ImageChannel::G);
343  const unsigned int bDstIndex = GetImageChannelIndex(layout, ImageChannel::B);
344 
345  imageData.resize(h * w * 3);
346  unsigned int offset = 0;
347 
348  for (unsigned int j = 0; j < h; ++j)
349  {
350  for (unsigned int i = 0; i < w; ++i)
351  {
352  uint8_t r, g, b;
353  std::tie(r, g, b) = image.GetPixelAs3Channels(i, j);
354 
355  imageData[offset+rDstIndex] = float(r) / 255.0f;
356  imageData[offset+gDstIndex] = float(g) / 255.0f;
357  imageData[offset+bDstIndex] = float(b) / 255.0f;
358  offset += 3;
359  }
360  }
361 
362  return imageData;
363 }
unsigned int GetWidth() const
std::tuple< uint8_t, uint8_t, uint8_t > GetPixelAs3Channels(unsigned int x, unsigned int y) const
unsigned int GetHeight() const

◆ GetImageDataInArmNnLayoutAsFloatsSubtractingMean()

std::vector<float> GetImageDataInArmNnLayoutAsFloatsSubtractingMean ( ImageChannelLayout  layout,
const InferenceTestImage image,
const std::array< float, 3 > &  mean 
)

Definition at line 322 of file InferenceTestImage.cpp.

References GetImageDataInArmNnLayoutAsFloats().

Referenced by CaffePreprocessor::GetTestCaseData().

325 {
326  return GetImageDataInArmNnLayoutAsFloats(layout, image,
327  [layout, &mean](ImageChannel channel, float value)
328  {
329  const unsigned int channelIndex = GetImageChannelIndex(layout, channel);
330  return value - mean[channelIndex];
331  });
332 }
std::vector< float > GetImageDataInArmNnLayoutAsFloats(ImageChannelLayout channelLayout, const InferenceTestImage &image, TProcessValueCallable processValue)

◆ GetImageDataInArmNnLayoutAsNormalizedFloats()

std::vector<float> GetImageDataInArmNnLayoutAsNormalizedFloats ( ImageChannelLayout  layout,
const InferenceTestImage image 
)

Definition at line 311 of file InferenceTestImage.cpp.

References GetImageDataInArmNnLayoutAsFloats(), and armnn::IgnoreUnused().

Referenced by YoloDatabase::GetTestCaseData().

313 {
314  return GetImageDataInArmNnLayoutAsFloats(layout, image,
315  [](ImageChannel channel, float value)
316  {
317  armnn::IgnoreUnused(channel);
318  return value / 255.f;
319  });
320 }
void IgnoreUnused(Ts &&...)
std::vector< float > GetImageDataInArmNnLayoutAsFloats(ImageChannelLayout channelLayout, const InferenceTestImage &image, TProcessValueCallable processValue)