209 static constexpr int deltaThreshold = 30;
227 inline int history1();
233 inline int history2();
239 inline int history3();
245 inline int history4();
251 inline int history5();
258 inline void push(
const int newDelta);
268 int deltas_[5] = { 0, 0, 0, 0, 0 };
284 static FinderPatterns detectFinderPatterns(
const uint8_t*
const yFrame,
const unsigned int width,
const unsigned int height,
const unsigned int minimumDistance = 10u,
const unsigned int paddingElements = 0u,
Worker* worker =
nullptr,
const bool detectInvertedReflectance =
false);
310 static void detectFinderPatternsSubset(
const uint8_t*
const yFrame,
const unsigned int width,
const unsigned int height,
FinderPatterns* finderPatterns,
Lock* multiThreadLock,
const unsigned int paddingElements,
const unsigned int firstRow,
const unsigned int numberRows,
const bool detectInvertedReflectance);
322 static void detectFinderPatternInRow(
const uint8_t*
const yFrame,
const unsigned int width,
const unsigned int height,
const unsigned int y,
FinderPatterns& finderPatterns,
const unsigned int paddingElements,
const bool isNormalReflectance);
359 static void addFinderPatternCandidateInRow(
const uint8_t*
const yFrame,
const uint8_t*
const yRow,
const unsigned int width,
const unsigned int height,
const unsigned int y,
const unsigned int paddingElements,
const unsigned int segment1StartForeground,
const unsigned int segment3StartForeground,
const unsigned int segment4StartBackground,
const unsigned int segment1Size,
const unsigned int segment2Size,
const unsigned int segment3Size,
const unsigned int segment4Size,
const unsigned int segment5Size,
const unsigned int foregroundSquareSegmentMin,
const unsigned int foregroundSquareSegmentMax,
const unsigned int backgroundSquareSegmentMin,
const unsigned int backgroundSquareSegmentMax,
const unsigned int centerSegmentMin,
const unsigned int centerSegmentMax,
const bool isNormalReflectance,
FinderPatterns& finderPatterns);
414 static bool checkFinderPatternInNeighborhood(
const uint8_t*
const yFrame,
const unsigned width,
const unsigned height,
const unsigned int paddingElements,
const unsigned int xCenter,
const unsigned int yCenter,
const unsigned int threshold,
const unsigned int blackSquareSegmentMin,
const unsigned int blackSquareSegmentMax,
const unsigned int whiteSquareSegmentMin,
const unsigned int whiteSquareSegmentMax,
const unsigned int centerSegmentMin,
const unsigned int centerSegmentMax,
const bool isNormalReflectance,
Scalar& symmetryScore,
Vector2* edgePoints);
437 static bool checkFinderPatternDirectional(
const uint8_t*
const yFrame,
const unsigned int width,
const unsigned int height,
const unsigned int paddingElements,
const unsigned int xCenter,
const unsigned int yCenter,
const Scalar angle,
const unsigned int threshold,
const unsigned int blackSquareSegmentMin,
const unsigned int blackSquareSegmentMax,
const unsigned int whiteSquareSegmentMin,
const unsigned int whiteSquareSegmentMax,
const unsigned int centerSegmentMin,
const unsigned int centerSegmentMax,
const bool isNormalReflectance,
Vector2& topBorder,
Vector2& bottomBorder);
442 static bool checkCenterSegmentDirectional(
const uint8_t*
const yFrame,
const unsigned int width,
const unsigned int height,
const unsigned int paddingElements,
const unsigned int xCenter,
const unsigned int yCenter,
const unsigned int threshold,
const unsigned int centerSegmentMin,
const unsigned int centerSegmentMax,
TransitionDetector::FindNextPixelFunc findNextBackgroundPixel,
Bresenham& bresenhamTop,
Bresenham& bresenhamBottom,
unsigned int& topColumns,
unsigned int& topRows,
unsigned int& bottomColumns,
unsigned int& bottomRows,
VectorT2<unsigned int>& topIn,
VectorT2<unsigned int>& topOut,
VectorT2<unsigned int>& bottomIn,
VectorT2<unsigned int>& bottomOut);
447 static bool checkSegmentDirectional(
const uint8_t*
const yFrame,
const unsigned int width,
const unsigned int height,
const unsigned int paddingElements,
const unsigned int threshold,
const unsigned int segmentMin,
const unsigned int segmentMax,
TransitionDetector::FindNextPixelFunc findNextPixel,
Bresenham& bresenhamTop,
Bresenham& bresenhamBottom,
unsigned int& topColumns,
unsigned int& topRows,
unsigned int& bottomColumns,
unsigned int& bottomRows,
VectorT2<unsigned int>& topIn,
VectorT2<unsigned int>& topOut,
VectorT2<unsigned int>& bottomIn,
VectorT2<unsigned int>& bottomOut);
455 static inline bool isTransitionToBlack(
const uint8_t* pixel,
TransitionHistory& history);
463 static inline bool isTransitionToWhite(
const uint8_t* pixel,
TransitionHistory& history);
479 static inline unsigned int determineThreshold(
const uint8_t* yPosition,
const unsigned int segmentSize1,
const unsigned int segmentSize2,
const unsigned int segmentSize3,
const unsigned int segmentSize4,
const unsigned int segmentSize5,
const bool isNormalReflectance);
509 centerIntensity_(centerIntensity),
510 grayThreshold_(grayThreshold),
511 symmetryScore_(symmetryScore),
513 moduleSize_(length /
Scalar(7))
527 centerIntensity_(centerIntensity),
528 grayThreshold_(grayThreshold),
529 symmetryScore_(symmetryScore),
531 orientation_(orientation),
532 moduleSize_(moduleSize)
537 ocean_assert(
corners !=
nullptr);
616 : deltas_{ 0, 0, 0, 0, 0 }
628 return deltas_[0] + deltas_[1];
633 return deltas_[0] + deltas_[1] + deltas_[2];
638 return deltas_[0] + deltas_[1] + deltas_[2] + deltas_[3];
643 return deltas_[0] + deltas_[1] + deltas_[2] + deltas_[3] + deltas_[4];
648 deltas_[4] = deltas_[3];
649 deltas_[3] = deltas_[2];
650 deltas_[2] = deltas_[1];
651 deltas_[1] = deltas_[0];
652 deltas_[0] = newDelta;
666 const int currentDelta = int(*(pixel + 0) - *(pixel - 1));
683 history.
push(currentDelta);
690 const int currentDelta = int(*(pixel + 0) - *(pixel - 1));
707 history.
push(currentDelta);
712inline unsigned int FinderPatternDetector::determineThreshold(
const uint8_t* yPosition,
const unsigned int segmentSize1,
const unsigned int segmentSize2,
const unsigned int segmentSize3,
const unsigned int segmentSize4,
const unsigned int segmentSize5,
const bool isNormalReflectance)
714 unsigned int sumForeground = 0u;
715 unsigned int sumBackground = 0u;
717 sumBackground += *(yPosition - 1);
719 for (
unsigned int n = 0u; n < segmentSize1; ++n)
721 sumForeground += *yPosition++;
724 for (
unsigned int n = 0u; n < segmentSize2; ++n)
726 sumBackground += *yPosition++;
729 for (
unsigned int n = 0u; n < segmentSize3; ++n)
731 sumForeground += *yPosition++;
734 for (
unsigned int n = 0u; n < segmentSize4; ++n)
736 sumBackground += *yPosition++;
739 for (
unsigned int n = 0u; n < segmentSize5; ++n)
741 sumForeground += *yPosition++;
744 sumBackground += *yPosition;
746 const unsigned int averageForeground = sumForeground / (segmentSize1 + segmentSize3 + segmentSize5);
747 const unsigned int averageBackground = sumBackground / (segmentSize2 + segmentSize4 + 2u);
748 const unsigned int averageBlack = isNormalReflectance ? averageForeground : averageBackground;
749 const unsigned int averageWhite = isNormalReflectance ? averageBackground : averageForeground;
751 if (averageBlack + 2u >= averageWhite)
754 return (
unsigned int)(-1);
757 return (averageBlack + averageWhite + 1u) / 2u;
763 ocean_assert(finderPatternB.
corners() !=
nullptr && finderPatternA.
corners() !=
nullptr);
764 ocean_assert(distanceTolerance >= 0);
766 const Line2 linesB[4] =
777 const Scalar squareDistanceThreshold = (lineAB.
length() * distanceTolerance) * (lineAB.
length() * distanceTolerance);
779 for (
unsigned int n = 0u; n < 4u; ++n)
797 if (sqrDistanceCornerA0 < squareDistanceThreshold && sqrDistanceCornerA1 < squareDistanceThreshold)
799 if (linesB[(n + 2u) & 0b0011u].
sqrDistance(finderPatternA.
corners()[2]) < squareDistanceThreshold && linesB[(n + 2u) & 0b0011u].
sqrDistance(finderPatternA.
corners()[3]) < squareDistanceThreshold)
807 if (sqrDistanceCornerA1 < squareDistanceThreshold && sqrDistanceCornerA2 < squareDistanceThreshold)
809 if (linesB[(n + 2u) & 0b0011u].
sqrDistance(finderPatternA.
corners()[3]) < squareDistanceThreshold && linesB[(n + 2u) & 0b0011u].
sqrDistance(finderPatternA.
corners()[0]) < squareDistanceThreshold)
817 if (sqrDistanceCornerA2 < squareDistanceThreshold && sqrDistanceCornerA3 < squareDistanceThreshold)
819 if (linesB[(n + 2u) & 0b0011u].
sqrDistance(finderPatternA.
corners()[0]) < squareDistanceThreshold && linesB[(n + 2u) & 0b0011u].
sqrDistance(finderPatternA.
corners()[1]) < squareDistanceThreshold)
825 if (sqrDistanceCornerA3 < squareDistanceThreshold && sqrDistanceCornerA0 < squareDistanceThreshold)
827 if (linesB[(n + 2u) & 0b0011u].
sqrDistance(finderPatternA.
corners()[1]) < squareDistanceThreshold && linesB[(n + 2u) & 0b0011u].
sqrDistance(finderPatternA.
corners()[2]) < squareDistanceThreshold)
840 ocean_assert(finderPatternB.
corners() !=
nullptr && finderPatternA.
corners() !=
nullptr);
848 (finderPatternA.
corners()[2] - finderPatternA.
corners()[0]).normalizedOrZero(),
849 (finderPatternA.
corners()[3] - finderPatternA.
corners()[1]).normalizedOrZero()
852 unsigned int diagonalEdgeA = (
unsigned int)(-1);
853 unsigned int diagonalEdgeB = (
unsigned int)(-1);
855 if (
Numeric::abs(diagonalsA[0] * directionAB) >= angleThreshold)
859 else if (
Numeric::abs(diagonalsA[1] * directionAB) >= angleThreshold)
864 if (diagonalEdgeA >= 2u)
871 (finderPatternB.
corners()[2] - finderPatternB.
corners()[0]).normalizedOrZero(),
872 (finderPatternB.
corners()[3] - finderPatternB.
corners()[1]).normalizedOrZero()
875 if (
Numeric::abs(diagonalsB[0] * directionAB) >= angleThreshold)
879 else if (
Numeric::abs(diagonalsB[1] * directionAB) >= angleThreshold)
884 return diagonalEdgeA < 2u && diagonalEdgeB < 2u;
This class implements Bresenham's line algorithms.
Definition Bresenham.h:27
This class implements a simple history for previous pixel transitions (a sliding window of pixel tran...
Definition FinderPatternDetector.h:215
int history2()
Returns the history with window size N.
Definition FinderPatternDetector.h:626
int history3()
Returns the history with window size N.
Definition FinderPatternDetector.h:631
void push(const int newDelta)
Adds a new delta object as most recent history.
Definition FinderPatternDetector.h:646
void reset()
Resets the history object.
Definition FinderPatternDetector.h:655
int history5()
Returns the history with window size N.
Definition FinderPatternDetector.h:641
TransitionHistory()
Creates a new history object.
Definition FinderPatternDetector.h:615
int history4()
Returns the history with window size N.
Definition FinderPatternDetector.h:636
int history1()
Returns the history with window size N.
Definition FinderPatternDetector.h:621
This class implements a detector for finder patterns which are part of QR Codes.
Definition FinderPatternDetector.h:205
static bool isDiagonal(const FinderPattern &finderPatternA, const FinderPattern &finderPatternB, const Scalar angleTolerance=Numeric::deg2rad(9))
Returns true if a pair of finder patterns is in a diagonal configuration, i.e.
Definition FinderPatternDetector.h:837
static constexpr int deltaThreshold
The intensity threshold between two successive pixels to count as a transition from dark to light (or...
Definition FinderPatternDetector.h:209
static bool checkFinderPatternInNeighborhood(const uint8_t *const yFrame, const unsigned width, const unsigned height, const unsigned int paddingElements, const unsigned int xCenter, const unsigned int yCenter, const unsigned int threshold, const unsigned int blackSquareSegmentMin, const unsigned int blackSquareSegmentMax, const unsigned int whiteSquareSegmentMin, const unsigned int whiteSquareSegmentMax, const unsigned int centerSegmentMin, const unsigned int centerSegmentMax, const bool isNormalReflectance, Scalar &symmetryScore, Vector2 *edgePoints)
Performs a check around a given candidate location looking for a correct configuration of light and d...
static bool findRefinementEdgeTransition(const uint8_t *const yFrame, const unsigned int width, const unsigned int height, const unsigned int paddingElements, const FinderPattern &finderPattern, const Vector2 &point, const Vector2 &perpendicularOut, const unsigned int maxPerpendicularSearchDistance, VectorT2< unsigned int > &pixelLocationIn, VectorT2< unsigned int > &pixelLocationOut)
Finds a foreground/background edge transition used to refine finder-pattern edges.
static void addFinderPatternCandidateInRow(const uint8_t *const yFrame, const uint8_t *const yRow, const unsigned int width, const unsigned int height, const unsigned int y, const unsigned int paddingElements, const unsigned int segment1StartForeground, const unsigned int segment3StartForeground, const unsigned int segment4StartBackground, const unsigned int segment1Size, const unsigned int segment2Size, const unsigned int segment3Size, const unsigned int segment4Size, const unsigned int segment5Size, const unsigned int foregroundSquareSegmentMin, const unsigned int foregroundSquareSegmentMax, const unsigned int backgroundSquareSegmentMin, const unsigned int backgroundSquareSegmentMax, const unsigned int centerSegmentMin, const unsigned int centerSegmentMax, const bool isNormalReflectance, FinderPatterns &finderPatterns)
Validates and adds a finder pattern candidate from a 1D row match.
static bool refineFinderPatternLocation(const uint8_t *const yFrame, const unsigned int width, const unsigned int height, FinderPattern &finderPattern, const unsigned int yFramePaddingElements=0u)
Refine the location and corners of a finder pattern.
static bool checkSegmentDirectional(const uint8_t *const yFrame, const unsigned int width, const unsigned int height, const unsigned int paddingElements, const unsigned int threshold, const unsigned int segmentMin, const unsigned int segmentMax, TransitionDetector::FindNextPixelFunc findNextPixel, Bresenham &bresenhamTop, Bresenham &bresenhamBottom, unsigned int &topColumns, unsigned int &topRows, unsigned int &bottomColumns, unsigned int &bottomRows, VectorT2< unsigned int > &topIn, VectorT2< unsigned int > &topOut, VectorT2< unsigned int > &bottomIn, VectorT2< unsigned int > &bottomOut)
Checks a non-center finder-pattern segment in both scanline directions.
static IndexTriplets extractIndexTriplets(const FinderPatterns &finderPatterns, const Scalar distanceScaleTolerance=Scalar(0.175), const Scalar moduleSizeScaleTolerance=Scalar(0.35), const Scalar angleTolerance=Numeric::deg2rad(Scalar(9)))
Extract 3-tuples of finder patterns that form good (plausible) candidates for QR code symbols.
static bool isTransitionToBlack(const uint8_t *pixel, TransitionHistory &history)
Checks whether the given pixel is a transition-to-black pixel (whether the direct left neighbor is a ...
Definition FinderPatternDetector.h:664
static void detectFinderPatternsSubset(const uint8_t *const yFrame, const unsigned int width, const unsigned int height, FinderPatterns *finderPatterns, Lock *multiThreadLock, const unsigned int paddingElements, const unsigned int firstRow, const unsigned int numberRows, const bool detectInvertedReflectance)
Detects finder patterns of QR codes in subregion of a given 8 bit grayscale image.
static bool checkFinderPatternDirectional(const uint8_t *const yFrame, const unsigned int width, const unsigned int height, const unsigned int paddingElements, const unsigned int xCenter, const unsigned int yCenter, const Scalar angle, const unsigned int threshold, const unsigned int blackSquareSegmentMin, const unsigned int blackSquareSegmentMax, const unsigned int whiteSquareSegmentMin, const unsigned int whiteSquareSegmentMax, const unsigned int centerSegmentMin, const unsigned int centerSegmentMax, const bool isNormalReflectance, Vector2 &topBorder, Vector2 &bottomBorder)
Performs a check for a given candidate location in a specified direction (yielding 2 edge points)
static bool findNextTransitionInRow(const uint8_t *const yRow, const unsigned int width, unsigned int &x, bool(*transitionDetector)(const uint8_t *, TransitionHistory &))
Finds the next transition in a row.
static FinderPatterns detectFinderPatterns(const uint8_t *const yFrame, const unsigned int width, const unsigned int height, const unsigned int minimumDistance=10u, const unsigned int paddingElements=0u, Worker *worker=nullptr, const bool detectInvertedReflectance=false)
Detects finder patterns of a QR code in a 8 bit grayscale image.
static bool estimateFinderPatternCorners(const unsigned int xCenter, const unsigned int yCenter, const Vector2 *edgePoints, const unsigned int edgePointsSize, Vector2 &location, Vector2 *corners, Vector2 &orientation, Scalar &moduleSize, const Scalar edgePointDistanceTolerance=2.25, const Scalar maxEdgeLineDistance=1.5)
Estimates the locations of the corners of finder pattern and computes the dominant orientation of the...
static bool isParallel(const FinderPattern &finderPatternA, const FinderPattern &finderPatternB, const Scalar distanceTolerance=Scalar(0.05))
Returns true if a pair of finder patterns is in parallel configuration, i.e., if one is above/below/l...
Definition FinderPatternDetector.h:760
static unsigned int determineThreshold(const uint8_t *yPosition, const unsigned int segmentSize1, const unsigned int segmentSize2, const unsigned int segmentSize3, const unsigned int segmentSize4, const unsigned int segmentSize5, const bool isNormalReflectance)
Determines the gray threshold separating bright pixels form dark pixels.
Definition FinderPatternDetector.h:712
static bool checkCenterSegmentDirectional(const uint8_t *const yFrame, const unsigned int width, const unsigned int height, const unsigned int paddingElements, const unsigned int xCenter, const unsigned int yCenter, const unsigned int threshold, const unsigned int centerSegmentMin, const unsigned int centerSegmentMax, TransitionDetector::FindNextPixelFunc findNextBackgroundPixel, Bresenham &bresenhamTop, Bresenham &bresenhamBottom, unsigned int &topColumns, unsigned int &topRows, unsigned int &bottomColumns, unsigned int &bottomRows, VectorT2< unsigned int > &topIn, VectorT2< unsigned int > &topOut, VectorT2< unsigned int > &bottomIn, VectorT2< unsigned int > &bottomOut)
Checks the center foreground segment in both scanline directions.
static void detectFinderPatternInRow(const uint8_t *const yFrame, const unsigned int width, const unsigned int height, const unsigned int y, FinderPatterns &finderPatterns, const unsigned int paddingElements, const bool isNormalReflectance)
Detects finder patterns of QR codes in a single row of an grayscale image.
static bool isTransitionToWhite(const uint8_t *pixel, TransitionHistory &history)
Checks whether the given pixel is a transition-to-white pixel (whether the direct left neighbor is a ...
Definition FinderPatternDetector.h:688
Definition of a class for finder patterns of QR codes (squares in the top-left, top-right and bottom-...
Definition FinderPatternDetector.h:58
const Vector2 * corners() const
Returns a pointer to the four corners of this finder pattern.
Definition FinderPatternDetector.h:587
Scalar symmetryScore() const
Returns the symmetry score that was determined when this finder pattern was detected.
Definition FinderPatternDetector.h:577
const Vector2 & orientation() const
Returns the dominant orientation of this finder pattern.
Definition FinderPatternDetector.h:599
Vector2 corners_[4]
The four corners of this finder pattern; points are stored in counter-clockwise order but no guarante...
Definition FinderPatternDetector.h:179
bool cornersKnown_
True if the four corners of this finder pattern are known, otherwise false.
Definition FinderPatternDetector.h:176
Scalar length() const
Returns the radius of the finder pattern.
Definition FinderPatternDetector.h:557
bool cornersKnown() const
Returns true if the four corners of this finder pattern are known, otherwise false.
Definition FinderPatternDetector.h:582
const Vector2 & position() const
Returns the (center) position of the finder pattern.
Definition FinderPatternDetector.h:552
unsigned int grayThreshold() const
Returns the threshold that was used for the detection of this finder pattern.
Definition FinderPatternDetector.h:567
Vector2 orientation_
Dominant orientation of this finder pattern.
Definition FinderPatternDetector.h:182
bool isNormalReflectance() const
Returns whether this finder pattern is of normal reflectance.
Definition FinderPatternDetector.h:605
static bool comesBefore(const FinderPattern &first, const FinderPattern &second)
Comparator to sort finder patterns based on their location in an image Pattern a comes before pattern...
Definition FinderPatternDetector.h:610
Scalar symmetryScore_
The symmetry score of this finder pattern, range: [0, infinity) (lower score = higher symmetry)
Definition FinderPatternDetector.h:173
Vector2 position_
The (center) position of the finder pattern within the camera frame.
Definition FinderPatternDetector.h:161
Scalar moduleSize_
Module width (bit width) in pixels.
Definition FinderPatternDetector.h:185
FinderPattern()
Creates an invalid finder pattern object.
Definition FinderPatternDetector.h:500
Scalar length_
The edge length of the finder pattern in pixels, range: (0, infinity).
Definition FinderPatternDetector.h:164
unsigned int grayThreshold_
The threshold that was used during the detection of this finder pattern.
Definition FinderPatternDetector.h:170
unsigned int centerIntensity_
The intensity value that has been measured in the center of the finder pattern.
Definition FinderPatternDetector.h:167
Scalar moduleSize() const
Returns the width of a module (= bit) in pixels.
Definition FinderPatternDetector.h:572
unsigned int centerIntensity() const
Returns the intensity value that was measured in the center of the finder pattern.
Definition FinderPatternDetector.h:562
bool(*)(const uint8_t *const, const unsigned int, const unsigned int, const unsigned int, const unsigned int, const unsigned int, CV::Bresenham &, const unsigned int, const unsigned int, unsigned int &, unsigned int &, VectorT2< unsigned int > &, VectorT2< unsigned int > &) FindNextPixelFunc
Function pointer to functions that detect a transition.
Definition TransitionDetector.h:42
static bool isBlack(const T &intensityValue, const T &threshold)
Determines whether an intensity value is black according to threshold value.
Definition TransitionDetector.h:181
This class implements an infinite line in 2D space.
Definition Line2.h:83
T sqrDistance(const VectorT2< T > &point) const
Returns the square distance between the line and a given point.
Definition Line2.h:498
This class implements a recursive lock object.
Definition Lock.h:31
This class provides basic numeric functionalities.
Definition Numeric.h:57
static constexpr T deg2rad(const T deg)
Converts deg to rad.
Definition Numeric.h:3241
static T abs(const T value)
Returns the absolute value of a given value.
Definition Numeric.h:1220
static constexpr bool isEqualEps(const T value)
Returns whether a value is smaller than or equal to a small epsilon.
Definition Numeric.h:2096
static T cos(const T value)
Returns the cosine of a given value.
Definition Numeric.h:1588
const T & x() const noexcept
Returns the x value.
Definition Vector2.h:703
const T & y() const noexcept
Returns the y value.
Definition Vector2.h:715
VectorT2< T > normalized() const
Returns the normalized vector.
Definition Vector2.h:563
VectorT2< T > normalizedOrZero() const
Returns the normalized vector.
Definition Vector2.h:577
T length() const
Returns the length of the vector.
Definition Vector2.h:620
This class implements a worker able to distribute function calls over different threads.
Definition Worker.h:33
unsigned int sqrDistance(const char first, const char second)
Returns the square distance between two values.
Definition base/Utilities.h:1159
std::vector< FinderPattern > FinderPatterns
Definition of a vector holding finder pattern.
Definition FinderPatternDetector.h:192
std::vector< IndexTriplet > IndexTriplets
Definition of a vector index triplets.
Definition FinderPatternDetector.h:51
std::array< FinderPattern, 3 > FinderPatternTriplet
Definition of a 3-tuple of finder patterns.
Definition FinderPatternDetector.h:198
std::array< unsigned int, 3 > IndexTriplet
Definition of a triplet of indices.
Definition FinderPatternDetector.h:45
LineT2< Scalar > Line2
Definition of the Line2 object, depending on the OCEAN_MATH_USE_SINGLE_PRECISION either with single o...
Definition Line2.h:28
float Scalar
Definition of a scalar type.
Definition Math.h:129
VectorT2< Scalar > Vector2
Definition of a 2D vector.
Definition Vector2.h:28
std::vector< QRCode > QRCodes
Definition of a vector of QR codes.
Definition QRCode.h:28
The namespace covering the entire Ocean framework.
Definition Accessor.h:15